文章砸壳使用到了ssh连接手机,Cycript注入进程查看应用的一些路劲,以及越狱的手机,所以在开始对应用进行砸壳之前,要对这些做一些提前的准备,本文就不一一细说安装方式了.我们从AppStore上面下载的应用都是加密的.要想导出应用的头文件,就得先对它进行脱壳.脱壳需要的准备工具是dumpdecrypted,这是github上面的一个开源工具.地址如下
https://github.com/stefanesser/dumpdecrypted
刚下载下来的时候,里面只有三个文件,这三个文件,里面有Makefile文件.Makefile文件里面本身就指定了编译的先后顺序,这个文件有一个好处,你只要写好了,只需要使用大多数IDE都有的命令,make命令,这样整个工程就会完全自动编译.所以我们需要在终端对这文件执行下make指令.
我们打开终端,cd到这个目录下.执行完make指令之后,就会多出来两个文件,一个dumpdecrypted.dylib动态库文件和dumpdecrypted.o的可执行文件
注入dumpdecrypted.dylib到沙盒进行砸壳
我们已经得到了一个dumpdecrypted.dylib
这样的一个动态库,把这个动态库注入到我们越狱手机的沙盒里面,因为沙盒是可写的,我们需要把从AppStore下载的应用中的可执行文件,砸壳到沙盒里面进行导出.
1.以对微信砸壳为实例,首先新建一个终端,用ssh连接手机之后,使用ps -e
我们可以看到很多的进程,其中在/var
目录下就可以看到微信的可执行文件位置.
2.重新新建一个终端,把这个WeChat这个可执行文件通过scp指令拷贝到桌面文件夹,在桌面文件夹里面使用otool -l 可执行文件 | grep crypt
可以看看它是否是加过壳的.如果cryptid显示的是1就证明是有壳的,如果显示的是0表示已砸过壳.
3.通过Cycript指令注入WeChat这个进程.然后使用NSHomeDirectory()查看它的沙盒路劲,我们要将dumpdecrypted.dylib
这个动态库注入到沙盒的Documents文件夹里面.
4.找到动态库的位置,通过scp把dumpdecrypted.dylib
拷贝到沙盒路劲的Documents文件夹里面去.中间的root接ip地址是你手机的wifi地址,要在一个局域网里面,我这边的wifi是连接的自己mac共享出的网络.拷贝期间提示要密码输入,默认都是alpine
5.接着到沙盒里面ls
查看是否已经拷贝到了里面.查看到已经拷贝进来了,我们就可以砸壳了.
6.砸壳,使用DYLD_INSERT_LIBRARIES
这样的指令,把我们拷贝在沙盒里面的dumpdecrypted.dylib
插入到WeChat这个进程里.完了之后,在Documents文件夹里面就会多出一个decrypted
为后缀的文件,那么这个文件就是砸过壳的文件,我们只要把它拷贝到桌面然后使用其它方式,导出它的头文件就行了.
导出头文件
1.继续使用scp把我们沙盒里面这个砸过壳的文件导出来.
scp [email protected]:"/var/mobile/Containers/Data/Application/E8F80CE4-F6B8-42A9-9739-8F15875CC7C9/Documents/WeChat.decrypted" /Users/James/Desktop/123
2.完了之后,在我们使用class-dump来导出头文件,可以在github上面把class-dump下载下来,打开它进行编译.然后选择里面的文件,把class-dump文件拷贝到和砸过壳的文件夹下就行.
https://github.com/nygard/class-dump
3.使用终端到这个文件下面可以验证WeChat.decrypted
它是否已经砸过壳,指令就是前面讲过的otool -l 可执行文件 | grep crypt
4.导出头文件,在当前文件夹下使用./class-dump -SsH 砸过壳的执行文件 -o 导出的头文件存放处
这样就可以完成咱们的操作了.可以看到整个头文件文件夹还是蛮大的.