
dumpdecrypted
砸壳,这种方法繁琐复杂,还需要开2个终端做不同的操作,并且只能获取到二进制文件。而
AloneMonkey
后来又开源了 frida-ios-dump
基于frida
的一键砸壳脚本,能直接获取砸壳后的ipa
包。并且在
AloneMonkey
开源的逆向插件MonkeyDev
中自带了一键破壳。先介绍下前两种方法的具体步骤,然后有兴趣的可以看下原理。
frida-ios-dump安装步骤
github
地址:https://github.com/AloneMonkey/frida-ios-dump
1 macOS安装frida
在终端输入1
sudo pip install frida
如果失败尝试科学上网
2 越狱设备安装frida
打开越狱手机,打开cydia,添加cydia源 https://build.frida.re/ ,添加成功之后,搜索Frida插件,5s及以后的都是选择第一个安装。
3 验证frida安装
确认设备和macOS都安装成功后
用USB连接设备和电脑
终端输入1
frida-ps -U
如果显示一堆 PID 和 NAME 就说明安装成功。
4 越狱设备安装OpenSSH
在Cydia
中主页就能直接安装
5 检查OpenSSH安装
设备和电脑同一wifi
,在终端中用ssh
连接手机ip
如我的手机ip
是192.168.43.155
1
ssh root@192.168.43.155

OpenSSH
初始密码是alpine
登录成功后如图。
6 安装libmobiledevice和usbmuxd
1 | brew install libimobiledevice |
安装完成之后,在终端将USB端口映射到未被使用的端口,这里使用22221
iproxy 2222 22
然后在新开一个终端,通过ssh连接本地的2222端口1
ssh -p 2222 root@localhost

输入OpenSSH密码,即可登录。
7 检查python版本
打开终端
输入1
python //或者 python -v

输入quit()
可退出python
交互界面。
8 安装frida-ios-dump
进入 https://github.com/AloneMonkey/frida-ios-dump
如果是python2.7
就使用master
分支。python3.x
使用 3.x
分支。
不是以上版本自行安装对应版本python
,并重复步骤7
确认。
确认python
版本和分支一致后,clone
项目到本地
然后cd
到该项目的根目录
执行安装依赖
Python 2.71
sudo pip install -r requirements.txt --upgrade
Python 3.x1
sudo pip3 install -r requirements.txt --upgrade
frida-ios-dump 使用
终端A
1 | iproxy 2222 22 |

输完不要关闭
开一个新的终端B
终端B
先用USB连接越狱设备1
ssh -p 2222 root@localhost

输入OpenSSH
密码,连接成功
此时终端A`
B都不要关闭
新建终端
C`
终端C
cd
到frida-ios-dump
项目的根目录
执行1
./dump.py -l

找到你要逆向的APP
执行1
2
3./dump.py [上面对应的Name]
//或者
./dump.py [上面对应的Identifier]

成功,砸壳的ipa
在frida-ios-dump
的项目根目录中。
注意,如果你修改了OpenSSH的密码,或者修改了映射端口号,会砸壳失败,只需要修改 dump.py 里的这里为你修改后的内容就OK了
dumpdecrypt
破壳
github
地址:https://github.com/VictorZhang2014/dumpdecrypted
准备工作
1 clone
该库到本地
2 终端cd到该目录,执行make
命令,会生成一个dumpdecrypted.dylib
3 对dumpdecrypted.dylib
进行签名1
2
3
4## 列出可签名证书
security find-identity -v -p codesigning
## 为dumpecrypted.dylib签名
codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib
4 越狱设备安装OpenSSH
使用步骤
1 连接设备
在终端A
中用ssh
连接越狱设备1
ssh root@192.168.43.155

2 定位目标App
关闭设备全部进程,打开目标App
执行1
ps -e
找到目标App WeChat
记录前面的
PID
4841
和后面的app二进制路径/var/containers/Bundle/Application/A0F664FC-E1CB-4977-A7A6-67AE7645A07F/WeChat.app/WeChat
3 获取documents
所在目录
执行1
cycript -p 4841[上面记录的PID]
进入cycript
输入1
[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

记录Document路径
/var/mobile/Containers/Data/Application/9F41D812-273D-4E60-B323-8362F060A453/Documents/
4 拷贝dumpdecrypted
到document
开启新的终端B1
2
3scp [dumpdecrypted.dylib的路径]/dumpdecrypted.dylib root@[手机ip]:[上面记录的Document路径]dumpdecrypted.dylib
//例子
scp /Users/hades/Documents/dumpdecrypted-master/dumpdecrypted.dylib root@192.168.92.140:/var/mobile/Containers/Data/Application/9F41D812-273D-4E60-B323-8362F060A453/Documents/dumpdecrypted.dylib
5 砸壳
在终端A
ctr+D
退出 cycript
cd
到上面记录的document目录
执行1
2
3DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib [最开始记录的app二进制路径]
//例子
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/A0F664FC-E1CB-4977-A7A6-67AE7645A07F/WeChat.app/WeChat
执行完,在对应的document目录
下会生成 [appName].decrypted
6 拷贝[appName].decrypted
到电脑
终端B1
2
3scp root@[手机ip]:[(appName).decrypted路径] [电脑目标路径]
//例子
scp root@192.168.92.140:/var/mobile/Containers/Data/Application/9F41D812-273D-4E60-B323-8362F060A453/Documents/WeChat.decrypted /Users/hades/Documents/
可能遇到的问题
有的App二进制竟然是中文!而SSH中没法输入中文
解决方案:http://bbs.iosre.com/t/ios-os-ssh/8010
SSH中空格的输入方式 \[空格]