
iOS 进阶与逆向编程
文章平均质量分 65
iOS 进阶与逆向编程笔记记录
卡尔特斯
GitHub: https://github.com/dengzemiao
掘金:https://juejin.im/user/4450440831840909
展开
-
iOS 逆向编程(九 - 2)将端口映射、USB连接手机封装成 .sh 脚本
上一篇 iOS 逆向编程(九 - 1)通过 USB 连接登录 iPhone 以及端口映射封装成现成脚本直接下载运行即可使用 DZMUsbConnect 。DZMUsbConnect 使用1、下载 DZMUsbConnect 后,电脑 usb 链接越狱手机,打开 命令行,cd 到 DZMUsbConnect 文件夹2、映射端口$ sh ./usb.sh3、通过 usb 登录连接手机$ sh ./login.sh效果:这样就连接手机成功了!简单方便..原创 2021-02-04 11:26:07 · 745 阅读 · 0 评论 -
iOS 逆向编程(二十三)dsc_extractor 动态库提取器
一、简介在 MaciOS 中,是使用了 /usr/lib/dyld 程序来加载动态库,也就是 上篇文章 中的 dyld_shared_cache_armX 动态库共享缓存 文件。dyld 源码:https://opensource.apple.com/tarballs/dyld/既然我们是通过 dyld 加载进来的,并生成了 dyld_shared_cache_armX 这的资源包,那么它也自然支持解包了。二、生成提取器指令我们将下在的 dyld 项目打开,找到里面的 dsc_原创 2021-01-13 17:45:27 · 1022 阅读 · 0 评论 -
iOS 逆向编程(二十二)Hopper Disassmbler 安装使用
一、安装Hopper Disassmbler 能够将 Mach-O 文件的 机器语言代码 反编译成 汇编代码 或 OC伪代码 或 Swift伪代码。我这里安装的是试用版,官方下载地址。安装好打开后,没有购买的就点试用然后就进来了二、使用将 Mach-O 文件拖到 Hopper Disassmbler 软件里面,我现在拖的是 应用程序 文件,右键显示包内容里面就有 Mach-O,区别只是你找到或它找到 Mach-O。每项配置的含义,翻译下就知道了,直接点 OK 就行原创 2021-01-13 16:22:43 · 1802 阅读 · 0 评论 -
iOS 逆向编程(二十一)代码编译过程(以及什么阶段可反编译)
在 iOS 开发中,我们的代码是怎么编译成 Mach-O 文件的?从下面的图我们可以看出,它是从 OC -> 汇编 -> 机器语言 这么一个步骤编译过去的,那能不能进行反编译回来呢?因为我们是能拿到 Mach-O 文件的,答案是:能反编译到 汇编阶段,但是无法从 汇编阶段 到 OC。因为从 OC 到 汇编,不同的 OC 代码,编译出来的汇编代码可能是一样的,所以也就无法从 汇编 反编译为 OC。...原创 2020-12-28 11:48:20 · 645 阅读 · 0 评论 -
iOS 逆向编程(二十)class-dump 安装与使用(如何导出APP头文件流程)
一、简介class-dump 是进行 iOS 逆向开发常用的一款工具,其主要作用是导出 App 的头文件内容。根据这些头文件可以大致分析出 APP 的结构和内容。二、安装1、class-dump 下载地址2、下载 class-dump-3.5 后,将 .dmg 文件里的 class-dump 复制到 /usr/local/bin 下:(注意:从 Mac OS X 10.11 开始,/usr/bin 文件已经不能写入了,管理员权限也不行,以前是放到 /usr/bin 文件里面,但是现在不允许写入了原创 2020-12-28 11:25:55 · 1591 阅读 · 0 评论 -
iOS 逆向编程(十九)Mach-O 入门了解(如何通过 Mach-O 逆向 APP 思路)
一、Mach-O 简介Mach-O 是一种文件格式,是 Mac 上可执行文件的格式,类似于 Windows 上的 PE 格式 (Portable Executable ), Linux 上的 elf 格式 (Executable and Linking Format)。我们编写的 C、C++、Swift、OC 最终编译链接生成 Mach-O 可执行文件,更详细的介绍自行百度。通常,在我们开发完成之后,就会打包发布,在我们打出的包里面有这样一个 应用程序 包,ipa 包解压之后里面也会有这样一个文原创 2020-12-25 10:51:39 · 988 阅读 · 0 评论 -
iOS 逆向编程(十八)Reveal 详细安装(以及安装问题解决)
一、Reveal 简介Reveal 是 Mac OS X 平台上的一款方便开发者调试 iOS 应用的开发软件,Reveal 能够在运行时调试和修改 iOS 应用程序。 Reveal 能连接到应用程序,并允许开发者编辑各种用户界面参数,而且会立即反应在程序的 UI 上。开发者要将 应用程序 与 Reveal 安装的框架层关联。Reveal 会扫描其网络中关联的应用程序,并让开发者选择连接其中之一,当连接到一个应用程序后,Reveal 将显示其 UI,其中包括大量的参数和设置。开发人员现在可以检查U原创 2020-12-24 15:11:28 · 2661 阅读 · 4 评论 -
iOS 逆向编程(十七)Cycript 使用对APP实测
上一章介绍了下 DZMCycript,这章做一个小测试,修改一下 微信钱包 的 零钱金额 跟 提示文字。// 连接手机终端dengzemiaodeMacBook-Pro:ssh dengzemiao$ sh login.sh // 搜索微信程序(微信APP需要处于启动状态)iPhone:~ root# ps -A | grep WeChat 1668 ?? 1:11.60 /var/containers/Bundle/Application/2771997E-6A14-4AC..原创 2020-12-23 14:03:23 · 789 阅读 · 0 评论 -
iOS 逆向编程(十六)DZMCycript 脚本使用(封装了常用的快捷函数,后续会继续添加)
上一篇文章 已经说完怎么封装使用 .cy 脚本文件了,这里借鉴 MJ大佬 的阳光普照封装了一些常用的操作,可以帮助快速的分析软件,后续会在这基础上继续更新脚本。脚本里面都有注释,可以下载自己去看看,下面会安装使用一下其中的部分方法,其他的方法也就是大同小异,可以自己参考或者自己编写了。其实会了都不难,也就是 JS + OC,会 前端 加 iOS开发 都能写得出来,后面可以加入一些有难度点的东西。一、安装使用脚本1、下载 DZMCycript 脚本文件2、通过 手机终端命令 或者 ..原创 2020-12-22 17:12:18 · 935 阅读 · 1 评论 -
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
一、简介每次进入 Cycript 调试之后,需要敲很多的调试指令,其实这些指令也是可以封装成 .cy 的 脚本文件,然后引用进行使用。只要安装了 Cycript 在越狱的手机上就会有这个 cycript 文件夹,我们可以通过 iFunBox 查看,或者通过终端连接手机进行查看:iFunBox 查看 cycript 文件夹终端连接手机查看 cycript 文件夹iPhone:~ root# cd /usr/lib/cycript0.9iPhone:/usr/lib/cycript原创 2020-12-22 17:10:51 · 1371 阅读 · 0 评论 -
iOS 逆向编程(十四)Cycript 语法入门
一、Cycript 语法简介根据 上一篇文章 进入 Cycript 调试模式之后,就需要通过脚本语言来进行操作调试了,比如:获取页面控制器、获取对象属性、手动调用对象方法、页面上添加自己的UI…等等。Cycript 也是有语法例子的,可以进去参考。在进入 cycript 调试环境后,就可以直接写 OC、JS … 等支持的语法了,例如:OC(其实也就是跟 OC 语法非常非常像的语法格式):cy# [UIApp description]@"<NMApplication: 0x1原创 2020-12-21 15:29:19 · 864 阅读 · 0 评论 -
iOS 逆向编程(十二)Cycript 安装与使用
Cycript 是由 Cydia 创始人 saurik 推出的一款脚本语言,混合了 Objective-C、C++、JavaScript 等语法的一个工具。让开发者在 命令行 下和应用交互,在运行时查看和修改应用,可以用来探索、修改、调试正在运行的 Mac 或 iOS APP。一、安装 Cycript通过 Cydia 安装 Cycript进程ID 与 进程名称 如何获取?Cycript 常用命令开启// 方式一$ cycript// 方式一 (进程ID 重新..原创 2020-12-21 13:52:40 · 724 阅读 · 0 评论 -
iOS 逆向编程(Error)ssh_exchange_identification: read: Connection reset by peer
Mac终端 连接登录 越狱手机 时,如果报错 ssh_exchange_identification: read: Connection reset by peer。问题1:手机是否为 非完美越狱?,中途有没有关过机,如果关机则丢失越狱环境,需要重新越狱回到越狱环境。问题1:如果是 免密登录,检查电脑 USB 是否有连接其他 非越狱手机,也就是你得保证你电脑只连接了越狱手机。...原创 2020-12-21 11:13:01 · 378 阅读 · 1 评论 -
iOS 逆向编程(十三)PS命令获取进程PID与名称(Process Status)
在 越狱环境 下,怎么列出系统当前所有的进程,手机默认是不支持。需要通过 Cydia 安装 adv-cmds,默认情况应该是安装了的,如果没有安装需要手动的安装一下安装好之后,操作如下:列出所有的进程$ ps -AiPhone:~ root# ps -APID TTY TIME CMD······5372 ?? 0:17.11 /Applications/Cydia.app/Cydia······搜索关键词$ ps -A..原创 2020-12-14 15:27:04 · 2212 阅读 · 0 评论 -
iOS 逆向编程(十一)iPhone 终端支持中文输入与vim命令(编辑文件)
通过终端连接手机之后,进入了手机的终端环境,会发现是无法输入中文的,输入中文会出现莫名的问题。如果想要 iPhone 终端里面支持中文输入1、进入 iPhone 终端,新建 ~/.inputrc 文件。dengzemiaodeMacBook-Pro:ssh dengzemiao$ sh login.shiPhone:~ root# vim .inputrc// 说明不支持 vim 命令,看下面有支持方式-bash: vim: command not found// 安装成功之后再次..原创 2020-12-14 14:22:23 · 1010 阅读 · 0 评论 -
iOS 逆向编程(十)sh脚本(shell)编写与执行指令区别
上一篇文章 端口映射命令,每次都需要去进入脚本文件在执行映射命令,但是这些常用的命令或者操作,可以专门存放到一个 sh脚本 文件,每次只需要执行这个脚本文件即可。一、上篇文章映射操作:1、进入 usbmuxd 文件夹$ cd /Users/dengzemiao/Downloads/usbmuxd2、执行映射命令,然后就可以通过客户端(电脑)10010 端口给服务端(手机)22 端口发送数据了。$ python tcprelay.py -t 22:10010二、将上面操作制作成 sh 脚本原创 2020-12-10 18:26:19 · 1095 阅读 · 1 评论 -
iOS 逆向编程(九 - 1)通过 USB 连接登录 iPhone 以及端口映射
一、简介之前操作都是通过 客户端(MAC)与 服务端(iPhone) 处于同一个 Wifi 下通过 SSH 进行连接。这种方式有个问题,就是网速不是很好的时候,输入一个命令会等一会才会显示,因为你输出成功了需要网络同步到手机上,你这边才会显示。如果通过 USB 连接两者将 SSH 传到 服务端(iPhone) 就不会有这个问题了,效率也高。二、端口介绍端口就是设备对外提供服务的窗口,每个端口都有个端口号(范围是 0~65535,共 65536 个)有些端口号是保留的,已经原创 2020-12-10 16:34:44 · 1859 阅读 · 0 评论 -
iOS 逆向编程(八)远程拷贝 - 客户端(电脑)通过 ssh 拷贝文件到服务端(手机)
根据 上一篇文章 已经将公钥远程上传了,现在需要删掉,这样才能更好的测试远程拷贝。// 登录手机dengzemiaodeMacBook-Pro:~ dengzemiao$ ssh root@10.0.89.184// 进入 ~/.ssh 文件夹iPhone:~ root# cd ~/.sshiPhone:~/.ssh root# ls -ltotal 4-rw------- 1 root wheel 403 Dec 8 17:49 authorized_keys// 移除之前上传的 a..原创 2020-12-09 11:50:32 · 780 阅读 · 0 评论 -
iOS 逆向编程(七)客户端(手机)免密认证登录
SSH-2 目前提供了 2 种常用的客户端认证方式。1、基于密码的客户端认证,使用账号和密码认证2、基于密钥的客户端认证,免密码认证SSH-2 默认会优先尝试 密钥认证, 如果认证失败,才会尝试 密码认证。如果做到 免密码认证登录 ?流程图:操作流程简单介绍:在客户端生成公私钥,然后将公钥追加到服务器授权文件尾部,为什么是追加到尾部呢?因为这个授权文件里面会存放很多的授权公钥或者别的验证数据,自然是不能覆盖的,只能追加。操作流程1、生成公私钥,输入命令之后一路回车即可$ s..原创 2020-12-08 18:14:03 · 484 阅读 · 0 评论 -
iOS 逆向编程(六) SSH、OpenSSH、SSL、OpenSSL 简介与关系
一、简介如果你仔细注意,在使用 Cydia 安装 OpenSSH 的时候,你会发现它是先安装了 OpenSSL 在安装 OpenSSH,他们直接是有什么关联跟区别呢?SSL:Secure Sockets Layer 的缩写,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密,可以说它是一个协议或者说一个标准。OpenSSL:既然说 SSL 是协议或者标准,那么就有对应的实现,OpenSSL 就是 SSL 的开源实现,绝大部分 HTTPS 请求等价于: HTTP +原创 2020-12-08 13:54:51 · 1069 阅读 · 0 评论 -
iOS 逆向编程(五)通过 (OpenSSH) Wifi 远程连接登录 iPhone
一、安装 Mac 上提高效率的辅助工具 (可选)二、简介1、我们经常在 Mac 的终端上通过敲一些命令行来完成一些操作。2、iOS 和 Mac OS X 都是基于 Darwin (苹果的一个基于 Unix 的开源系统内核) ,所以 iOS 中同样支持终端的命令行操作。3、在逆向工程中,我们经常会通过命令行来操纵 iPhone。4、为了能够让 Mac 终端中的命令行能作用在 iPhone 上,我们得让 Mac 和 iPhone 建立连接。5、通过 Mac 远程登录到 iPhone 的方式建立连接。原创 2020-12-07 17:01:01 · 1145 阅读 · 0 评论 -
Mac 提高工作效率的工具
XtraFinder: 增强型 Finder,可以多开标签页,系统的 Finder 一个窗口一个文件夹,这个支持一个窗口多个标签栏,一个标签栏对应一个文件夹。iTerm2:一个带颜色区分的命令行工具,支持颜色自定义等。Go2Shell:有时候访问文件夹,系统的需要将文件夹拖进命令行才有路径,这个插件只需要点击 Finder 上的按钮则直接进入命令行到这个文件目录下Alfred:便捷搜索,可以自定义搜索,包括自定义按键。...原创 2020-12-04 17:46:29 · 388 阅读 · 0 评论 -
iOS 逆向编程(三)实操越狱详细流程
一、使用 CheckRa1n 越狱常见越狱工具可以看这篇 iOS 逆向编程(二)越狱入门知识我的手机是 iPhone 5s 版本为 ios 12.4.6(推荐先看) 如果嫌麻烦,直接下面有推荐手机直接越狱文章(但是需要 微劈恩),毕竟无论是用工具,还是低版本系统问题导致报错,操心事多。最好事先查一下自己的手机版本,以及工具是否支持这个版本或者手机型号,CheckRa1n 支持低版本,当然其他的工具也有,用之前自行了解一下,因为有的新出的工具都是支持高点系统版本。1、下载 Che原创 2020-12-03 11:39:35 · 5028 阅读 · 0 评论 -
iOS 逆向编程(四)实操越狱进阶必备软件
一、辅助软件安装根据 上一篇文章 越狱成功之后,对于技术学习来说,在安装一个辅助软件效果会更好,能帮助我们更深入的学习一些东西。iPhone 通过 Cydia 安装这几个辅助软件1、【Apple File Conduit "2"】:作用是:保证我们可以访问整个 iOS 设备的文件系统,它是 Cydia 之父 Jay Freeman 为了解决 ios 7.x 越狱后无法访问系统文件(越狱)的问题,该插件与 afc2add、afc2 服务补丁功能一样,但是该插件是新出的,推荐使用。2、【AppS原创 2020-12-03 11:37:11 · 880 阅读 · 0 评论 -
Cydia Impactor 常见报错及原因
在使用过程中 Cydia Impactor 报错,下面汇总了常见原因及解决方法以供参考:1、provision.cpp:81解决方法:选择 “Xcode - Revoke Certificates”,再次输入之前输入过得 Apple ID 账号密码,点击确定。2、provision.cpp:168 | cpp:173 | cpp:150原因一:密码输入错误原因二:未关闭双重认证解决方法:关闭双重认证;由于 Apple 的规定,部分 Apple ID 可能不能关闭 Apple ID 的双重验证原创 2020-11-27 15:26:55 · 3331 阅读 · 0 评论 -
iOS Odyssey 和 unc0ver 的区别
越狱 Odyssey 和 unc0ver 用哪款比较好!暂不提 checkra1n,只是单独说一下手机版在线越狱的这二款工具,先说一下这二款越狱工具区别,Odyssey 越狱后会出现 sileo 越狱商店,而 unc0ver 越狱后会出现 Cydia 商店。简单来说,这二款越狱工具最明显区分就是越狱商店不同,而 Cydia 越狱商店最早期先诞生的商店,也是最为成熟的越狱商店,而 Sileo 是后期出现的。Sileo 优势是添加软件源快安装插件也快,而 Cydia 添加源和安装插件会稍微慢点,却偶原创 2020-11-27 13:23:36 · 5698 阅读 · 0 评论 -
iOS 逆向编程(二)越狱入门知识
一、 什么是越狱 (iOS Jailbreak) ?利用 iOS 系统的漏洞,获取 iOS 系统的最高权限( Root ) ,解开之前的各种限制(合法行为)。二、越狱的优缺点:优点* 打造个性化、与众不同的 iPhone* 自由安装各种实用的插件、主题、APP* 修改系统 APP 的一些默认行为* 自由安装非 AppSore 来源的 APP* “付费APP” 秒变 "免费APP”* 灵活管理文件系统,让iPhone可以像U盘那样灵活* 给开发者提供了逆向工程的环境* 未越狱 i原创 2020-11-26 16:17:19 · 1013 阅读 · 0 评论 -
iOS 逆向编程(一)入门条件
一、学习条件至少1年以上iOS开发经验。UI、多线程、数据存储知道用就行,一般做了一年以上iOS开发基本都满足这一点。二、调试设备建议至少 iPhone 5s (因为从 5s 开始支持 arm64 架构)。或者至少是 iPad Air、iPad mini2 等支持 arm64 架构的设备。三、设备越狱越狱分为:不可越狱、可越狱(不完美越狱)、完美越狱。建议至少 iOS 8 或以上完美越狱,版本也不能太高,要保证能够完美越狱。如果实在不能完美越狱,也凑合弄原创 2020-11-26 15:49:07 · 833 阅读 · 1 评论