iOS逆向砸壳
苹果商店下载的安装包是加壳的,故需要脱壳后才可操作
以下方案只能砸可执行文件,如果包含动态库,需要一个一个砸,比较麻烦。目前我了解的最佳实践是frida-ios-dump
方式砸壳,可以直接获取到ipa文件,后续流程维护进来。
准备工作
- 下载dumpdecrypted
- 越狱设备
- 越狱设备安装插件
Apple File Conduit “2”
- Mac电脑安装iFunBox
生成砸壳工具动态库
- 将下载的dumpdecrypted-master.zip解压
- 终端进入解压后的根目录
- 执行
make
命令
得到一个名为
dumpdecrypted.dylib
的动态库
将生成的动态库注入至需要砸壳APP的沙盒目录
SSH进入越狱设备
1 | ssh root@ip |
如果觉得WIFI慢,可以使用usbmux进行转发
Cycript操作目标APP
- 获取目标APP名称
1
ps -ef
通过进程列表可以拿到
App可执行文件名称
以及App可执行文件绝对路径
- 进入cycript操作APP的交互环境
1
cycript -p App可执行文件名称
通过cycript语言获取沙盒目录
1 | [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0] |
如果导入过mjcript,可以使用如下命令
1 | @import mjcript |
将动态库拷贝至沙盒目录下
- 使用iFunBox进入设备的沙盒目录(Documents目录下)
- 拖拽进去即可
执行砸壳命令
先进入沙盒目录下
1 | cd Documents目录 |
1 | DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib App可执行文件绝对路径 |
eg:
1 | DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/D99C9215-D954-4067-BFD8-0F542C086F54/BitAutoPlusStore.app/BitAutoPlusStore |
问题
如果出现以下错误:
1 | could not load inserted library 'dumpdecrypted.dylib' into hardened process because no suitable image found |
在Mac环境下将dumpdecrypted.dylib进行签名
- 获取所有证书,从中选一个
1
security find-identity -v -p codesigning
- 签名
1
codesign --force --verify --verbose --sign "Apple Development: Cheng Ren (A699T56LQP)" dumpdecrypted.dylib
- 将新的dumpdecrypted.dylib文件拖入至沙盒