iOS逆向流程图
界面分析
通过 Cycript 在终端对 APP 进行分析、或者通过 GUI 工具 Reveal 直观分析界面。
代码分析
iOS开发中,所有的代码最终都会经过编译生成 Mach-O 文件,所以我们需要对 Mach-O 文件进行静态分析,可以使用 class-dump
、MachOView
、Hopper Disassembler
、ida
等工具。
MachOView
使用 MachOView 可视化查看 Mach-O 文件的结构。
下载地址:https://github.com/mythkiven/MachOView
class-dump
可以把 Mach-O 文件的 class 信息给 dump 出来(把类信息给导出来),生成对应的.h头文件。
下载地址:http://stevenygard.com/projects/class-dump/
下载完工具包后,将 class-dump
文件拷贝到 /usr/local/bin
目录,这样终端就能识别 class-dump
命令了。
class-dump -H Mach-O文件路径 -o 头文件存放目录
如果工程里有 Swift 代码,官方地址下载的 class-dump
可能会报错,可以网上重新找别人修改过的,比如:https://github.com/lerpo/class-dump 。
Hopper Disassmbler
可以把 Mach-O 文件的机器代码反编译成汇编代码、OC 伪代码或 Swift 伪代码。
常用快捷键:
Shift + Option + X # 找出哪里引用了当前方法
动态调试
对运行中的 APP 进行代码调试,使用 LLDB
、debugserver
。
代码编写
进行完界面分析、代码分析和动态调试之后,我们可以在特定位置注入我们写的代码,必要时可以重新签名并打包 ipa 安装包。