iOS逆向工程(六):使用frida-ios-dump工具,一键
mac端配置:
brew cleanup
附:使用
brew install xxx
如果一直卡在Updating Homebrew…
可以control + z
结束当前进程再新开一个终端安装此时可以跳过更新
- ②安装python3:
brew install python3
或者brew reinstall python@3.*
- 升级pip:
sudo -H pip3 install --upgrade pip
- 安装wget:
brew install wget
- 安装点:
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
方法二:Mac使用HomeBrew安装Python3.*并设为默认版本
方法一:升级最新版系统后使用系统自带的python3
升级到Mac 10.15后,安装最新版的Xcode,系统中有Python3,只需要创建软连接将/usr/local/bin/python指向系统的python3即可,其实/usr/bin/python3使用的是Xcode中的python(/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.*/Resources/Python.app/Contents/MacOS/Python)
ln -s /usr/bin/python3 /usr/local/bin/python
ln -s /usr/bin/pip3 /usr/local/bin/pip
ls -al /usr/local/bin/pip
lrwxr-xr-x 1 wood admin 13 12 24 18:15 /usr/local/bin/pip -> /usr/bin/pip3
ls -al /usr/local/bin/python
lrwxr-xr-x 1 wood admin 16 12 24 18:14 /usr/local/bin/python -> /usr/bin/python3
Mac安全地升级Python3,不会删除Mac自带的Python2.x,homebrew安装新版本Python后,通过软连接来设置python访问的是python3。
Mac自带的python是2.7.x,这个太老了在运行python命令时会提示建议用python3,下面介绍两种方式安全地升级python3。
Mac升级Python3
mac删除自己安装的python3.8
(相关知识拓展)
/usr/bin 下面的都是系统预装的可执行程序,会随着系统升级而改变。
/usr/local/bin 目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件。
如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响,比如我的一台服务器的PATH变量为。
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
可以看到 /usr/local/bin 是优先 /usr/bin 的,所以如果which python出现多个选项,则会受PATH的影响。
- ③安装usbmuxd:
brew install usbmuxd
- 清理残留:
rm ~/get-pip.py
iOS远程真机之usbmuxd中iproxy的作用
-
frida-ios-dump是基于frida的,所以先要在手机和电脑上安装
frida
,命令如下:(注意,手机和电脑上的frida的版本需要保持一致)
Mac上安装frida的命令:
pip3 install frida
pip3 install frida-tools
升级frida
pip3 install -U frida
pip3 install -U frida-tools
iPhone上安装frida的方法:
打开Cydia->软件源->编辑->添加,输入build.frida.re,添加软件源后,搜索安装Frida即可(iPhone 7 ↑ 对应的是Frida for pre-A12 derices)
- 在越狱手机和mac开发机都安装了frida之后,需要保持版本号一致,否则会出现:
Failed to enumerate applications: unable to communicate with remote frida-server;
测试方法①
在mac开发机上查看版本号:
$ frida --version
在越狱手机查看版本号:
iPhone-7:~ root# frida-server --version
测试方法② A quick smoke-test
Now, back on your Windows or macOS system it’s time to make sure the basics are working. Run:
$ frida-ps -U
配置frida-ios-dump环境:
从Github下载工程:
sudo mkdir /opt/dump && cd /opt/dump && sudo git clone https://github.com/AloneMonkey/frida-ios-dump
安装依赖:
sudo pip3 install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade
修改dump.py参数:
vim /opt/dump/frida-ios-dump/dump.py
找到如下几行(32〜35 ):
User = 'root'
Password = 'alpine'
Host = 'localhost'
Port = 2222
按需修改 如把Password 改成自己的
ps:如果不习惯vim 用访达打开/opt/dump/frida-ios-dump/dump.py手动编辑。
设置别名:
在终端输入:
vim ~/.bash_profile
在末尾添加以下一段:
alias dump.py="/opt/dump/frida-ios-dump/dump.py"
注意:以上的/ opt / dump可以按需更改。
使别名生效:
source ~/.bash_profile
砸壳演示
步骤:
iOS 设备,USB 连接电脑。
打开Mac终端,输入
$ iproxy 2222 22
把当前连接设备的22端口(SSH端口),映射到电脑的2222端口。
新建终端页面,输入
$ ssh -p 2222 root@127.0.0.1
连接iOS设备。密码默认是:alpine
手机上打开你要脱壳的应用(打开皮皮虾)
新建终端窗口 cd 到frida-ios-dump-master目录下(/opt/dump/frida-ios-dump)执行
$ python3 ./dump.py -l
可以查看项目的bundle id.
然后执行
$ python3 ./dump.py 应用名或者bundle id 开始砸壳
脱壳成功后,在./dump.py所在目录里或者用户目录就会有脱过壳的.ipa了.
注意:
-
由于通过SSH的方式连接手机,所以请先确保已将公共密钥添加到目标设备的〜/ .ssh / authorized_keys文件中,具体方法请看iOS逆向工程(二):Mac远程登录iPhone
-
如果运行
./dump.py
命令后,手机出现了崩溃重启,可以这样解决:从frida-releases下载相应版本的frida-server,替换手机里 /usr/sbin/frida-server文件,重启手机,再越狱,就可以修复。 -
如果发生了设备重启、失去了连接等错误,尝试在
./dump.py
之前打开要脱壳的App -
请确保你要脱壳的App是从AppStore下载的App,否则可能会出现莫名其妙的卡住不动
-
Generating "皮皮虾.ipa"
zip I/O error: Permission denied
zip error: Could not create output file (/opt/dump/frida-ios-dump/皮皮虾.ipa)
Command '('zip', '-qr', '/opt/dump/frida-ios-dump/皮皮虾.ipa', './Payload')' returned non-zero exit status 15.
------文件夹权限不够,升级权限.
sudo chmod -R 777 opt
验证
判断是否脱壳成功:
1.使用mach-o工具查看
load-command/LC-Encryption_INFO/cryptid的值,
0代表未加密,非0代表加密.
2.使用otool命令,
xxx:~ gn$ otool -l Super | grep crypt
cryptoff 55992320
cryptsize 4096
cryptid 0