iOS逆向之砸壳的三种方法--frida、clutch、dumpdecrypted

很久没有发文章了,最近沉迷逆向无法自拔,开始写点东西做个小总结吧,后续慢慢更新吧,全当记录,共同学习。


方法一、frida

frida是一个利器,除了砸壳还有很多作用,不仅在iOS上用处很大,在Android上更加厉害,想进一步了解的可以自行搜索研究。

步骤1、终端执行命令安装frida

sudo pip install frida     【这里是Python API binding】

sudo pip install frida-tools  【这里是frida 命令行工具】

二者缺一不可,这是2018年07月12日最新版本的frida

步骤2、在大神这里下载砸壳的脚本,然后cd到目录中【前面链接是python2的脚本,这里是大神python3的脚本】

sudo pip install -r ./requirements.txt --upgrade 【这里是安装脚本中依赖的库,./requirements.txt路径根据自己的文件路径修改】

如果你的设备连接密码做了修改需要在目录中的dump.py里面将Password改成你设置的密码。

步骤3、设置手机端口连接

iproxy 2222 22

步骤4、再打开一个电脑命令行终端,新建一个文件夹,cd进去,准备接受要砸壳出来的iPA文件

步骤5、将dump.py脚本拖入命令行终端,在后面输入要砸壳的App名称或者bundleID

./dump.py QQ  【./dump.py路径根据自己的文件路径修改】

即可拿到砸壳出来的iPA文件了。【注:手机上需要砸壳的App要运行起来】

另外一个大神这里有更加简便的方法,但是我没来得及尝试,各位有兴趣可以去研究研究。


方法二、Clutch

Clutch是一个比较经典的砸壳工具了,但是由于很多App都不能砸壳成功导致用户逐渐减少,但是也可以拿来一用。

步骤1、下载clutch源码

步骤2、编译工程生成clutch执行文件


iOS逆向之砸壳的三种方法--frida、clutch、dumpdecrypted_第1张图片
clutch文件

步骤3、将clutch执行文件拷贝到手机里

可以使用命令

scp ./clutch【路径视自己clutch路径而定】 [email protected]:/usr/bin 【视自己手机IP而定】

或者直接使用第三方助手将clutch拖入到/usr/bin 路径下

步骤4、连接设备,cd到clutch路径下

ssh [email protected]

cd /usr/bin

步骤5、查看手机上的App

clutch -i

步骤6、输入app前面对应的序号,开始砸壳

clutch -d 2

得到砸壳出来的iPA文件,导出到电脑上即可

iOS逆向之砸壳的三种方法--frida、clutch、dumpdecrypted_第2张图片
ipa路径


方法三、dumpdecrypted

这个方法砸壳App不会生成iPA文件,生成的是decrypted后缀的文件。

步骤1、下载dumpdecrypted

步骤2、终端输入cd到下载的目录,再输入make得到dumpdecrypted.dylib文件

步骤3、连接设备

ssh [email protected]

步骤4、寻找要砸壳的App

ps -e  【得到所有手机运行的app进程】

得到路径,先做保存,之后有用

1890 ?? 0:14.42 /var/mobile/Containers/Bundle/Application/CBE24EFB-D045-4F10-ACB5-7E7B0794C5E9/WeChat.app/WeChat

步骤5、进入到进程中

cycript -p 1890

[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]    

/var/mobile/Containers/Data/Application/A28D18B7-37FF-43D9-B1F0-E6E0EAD5794A/Documents/

得到路径,先做保存,之后有用

步骤6、退出手机连接,注入动态库

scp ./dumpdecrypted.dylib [email protected]:/var/mobile/Containers/Data/Application/A28D18B7-37FF-43D9-B1F0-E6E0EAD5794A/Documents/

第一个是dumpdecrypted.dylib路径,第二个是第二步得到的路径

步骤7、再次连接设备砸壳

ssh [email protected]

cd /var/mobile/Containers/Data/Application/A28D18B7-37FF-43D9-B1F0-E6E0EAD5794A/Documents/ 

【cd 到第二步得到的路径下】

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/CBE24EFB-D045-4F10-ACB5-7E7B0794C5E9/WeChat.app/WeChat 

【后面参数是第一步得到的路径】

步骤8、导出得到的decrypted后缀文件

scp [email protected]:/var/mobile/Containers/Data/Application/A28D18B7-37FF-43D9-B1F0-E6E0EAD5794A/Documents/WeChat.decrypted /Users/bean/Desktop/decrypted

【第一个参数是第二步得到的路径,第二个参数是电脑桌面路径】

也可以使用第三方助手直接找到路径导出


检验一下自己的成果吧。

三种方式得到的文件,均可使用终端输入命令检测

otool -l xxx 【得到的可执行文件路径】

三个砸壳方法各有优劣,就目前来看frida更适合大多数的App,但是环境集成也更加复杂,工欲善其事,必先利其器,准备功夫都是必要的。


菜鸟走向大牛,大家共同前进,如果觉得不错,请给个赞/关注。

一起交流学习,有问题随时欢迎联系,邮箱:[email protected]

你可能感兴趣的:(iOS逆向之砸壳的三种方法--frida、clutch、dumpdecrypted)