首先:你要有一台越狱设备,并且上面安装了你想砸壳的App,没设备就不用往下看了,白搭。
本文主要使用的是frida-ios-dump,比较简便。
如果要用dumpdecrypted或者Clutch的回头再补充。【dumpdecrypted的已补充在最下方】
一:mac环境
1. 安装HomeBrew
用于安装wget、usbmuxd 等。
/usr/bin/ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
等待一会。
2. 安装Wget
wget是一个从网络上自动下载文件的自由工具。
brew install wget
3. 安装pip
pip 是Python 包管理工具,用于安装Python模块。
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
4. 安装matplotlib
sudo pip install matplotlib
5. 安装usbmuxd
主要用于在USB协议上实现多路TCP连接,将USB通信抽象为TCP通信。
brew install usbmuxd
6. 安装frida
Frida是一款基于python + javascript 的hook与调试框架。
它允许你将 JavaScript 的部分代码或者你自己的库注入到 windows、macos、linux、iOS、Android,以及 QNX 的原生应用中,同时能完全访问内存和功能。
sudo pip install frida --ignore-installed six -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
如果长时间没反应,建议代理V什么N后,再次执行,或多等待下。
【这里我连了V什么N,实在等不了】
7. 安装 frida-dump-iOS
基于frida,核心砸壳工具
sudo mkdir /opt/dump &&cd /opt/dump && sudo git clone https://github.com/AloneMonkey/frida-ios-dump
如果提示目录不存在,可以手动建立。
8. 安装脚本依赖环境
sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade
或者
cd /opt/dump/frida-ios-dump
sudo pip install -r requirements.txt --upgrade
【以下步骤我不需要,如果你需要,自己看着办】
9. 修改dump.py参数
用于自动连接ssh
open /opt/dump/frida-ios-dump/dump.py
找到如下几行(32~35):
User ='root'Password ='alpine'Host ='localhost'Port = 2222
按需修改 如把Password 改成自己的(一般默认都是alpine)
10. 设置别名
方便直接调用dump.py
在终端输入:open ~/.bash_profile在末尾新增下面一段:aliasdump.py="/opt/dump/frida-ios-dump/dump.py"
使别名生效:source ~/.bash_profile
二:手机环境
1. 安装OpenSSH
打开cydia
搜索安装OpenSSH
2. 安装frida
打开cydia 添加源:http://build.frida.re
打开刚刚添加的源 安装Frida
Frida分32位跟64位,我32位的4s这一步有问题,下面详细说。
看问题跳到下文【问题来了】,如果跟我问题一样,跳到【动态砸壳】
三:砸壳
拿出iOS 设备,USB 连接电脑。
打开Mac终端,输入
iproxy 2222 22
把当前连接设备的22端口(SSH端口),映射到电脑的2222端口
如果你usb插入了鼠标,那可能还要加设备id
iproxy 2222 22 1b31925611b31925615bc7c7c1d5bc7c7c1d
不然会提示连接失败
正常会提示等待连接,wating for connection...
这时候不要傻傻的等,打开一个新的终端
输入
ssh -p 2222 [email protected]
连接iOS设备。
dump.py -l 查看需要砸壳的应用。
dump.py 应用名或bundle id进行砸壳.
目标文件在user下
四:个别问题
【问题来了】:32位的4s ,到dump.py -l这一步会崩溃,调试了下dump.py的代码,发现device取详细信息的类好像有问题,同事这台4s 9.3.5是不完美越狱,不知道是不是跟这个有关系,其次,每次崩溃就重启,重启又要越狱一下,不想折腾了。64位我估计没问题。
由于dump.py会崩溃,而且手机要一直越狱很浪费时间,所以决定采用动态砸壳的方式继续:
【动态砸壳】
dumpdecrypted
1、环境
电脑:
下载dumpdecrypted
下载地址:https://github.com/stefanesser/dumpdecrypted
手机:
Cydia源安装cycript
Cydia源安装openssh
2、终端输入cd到下载的目录,再输入make得到dumpdecrypted.dylib文件
3、ssh连接设备
输入密码,默认都是alpine
4、寻找要砸壳的App
ps -e (得到所有手机运行的app进程)
上面的图是借的,自己没保存。可以查看到你想越狱的App的pid。
或者你如果知道AppName,也可以这样:
ps -e | grep AppName。
得到路径1(App路径)
5、先用
cycript -p pid
钩住 APP,会有个cy#
接着执行命令:
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
(如下图)
得到路径2(Documents路径)
这步如果看不懂,留个图,我也折腾了一会
6、将dumpdecrypted.dylib先进行签名
codesign --force --verify --verbose --sign "iPhone Developer:xxx" dumpdecrypted.dylib
否则砸壳命令可能会报Kill:9的错误
7将签名后的dumpdecrypted.dylib 拷贝到 用 路径2Documents 路径下。
8、执行砸壳,这里以微信为例:
DYLD_INSERT_LIBRARIES=/var/mobile/Containers/Data/Application/25025AC7-6BFD-4F00-B2A4-67D96AD0D35A/Documents/dumpdecrypted.dylib /var/containers/Bundle/Application/AD21CDC7-208E-48E6-B739-9448C64F7907/WeChat.app/WeChat
正常就好了,但是我出问题了,后来按下面的步骤成功,留个截图,如果签名后依然出现Kill:9的报错,可以尝试:
砸壳失败,出现Kill:9
a:)ssh链接iphone,输入 su mobile
b:)印象中有个提示,不管他,然后会进入/var/root,输入cd
c:)在cd后的mobile目录下执行砸壳命令,砸壳后的文件会在当前目录下。图片如下【我图没了,但是步骤没错,借个图】
将文件拷贝出来查下是否砸壳成功,
WeChat.app xxx$ otool -l WeChat | grep crypt
为0,完事。