为何砸壳
-
appstore 给应用加密了
- 砸壳:不知道解密的确切方法,调用苹果的解密程序
砸壳的方式
- 两种砸壳方式
- 静态:解密程序调用
- 动态:app跑到内存,将内存砸壳的二进制文件拷贝出来
- 砸壳工具,有很多主要介绍dumpdecrypted和Clutch
dumpdecrypted、Clutch、AppCrackr、frida-ios-dump
砸壳工具
- 硬件工具:
iphone 5s
- 软件工具
1、clutch
2、iFunBox
3、class-dump
砸壳步骤
Cluth砸壳步骤:
- 映射手机
- 拷贝砸壳工具clutch到手机上:【& scp -P 12345 Clutch-2.0.4 root@localhost:/usr/bin】
- 连接 【& sh usblogin.sh】
- 查看手机该目录下是否有Clutch-2.0.4:【& cd /usr/bin】【 & ls】
- 重命名Clutch-2.0.4 【& mv Clutch-2.0.4 Clutch】【 & ls】
- 给执行权限,给完后会变黑:【& chmod +x Clutch】
- 查看那些应用没有砸壳:【& Clutch -i】
- 进行砸壳:【& Clutch -d XX】 XX为序号或者BundleID
- 砸壳完成后,会生成一个ipa包,注意查看路径,可以用iFunBox 进入手机目录查看
- 可以直接从iFunBox拖出来到桌面,找到.app,查看包内容,找到可执行文件
- 对可执行文件进行查看:【& otool -l XX | grep crypt】,看参数 cryptid 对应的值,0 为已砸壳,1 为未砸壳
- 导出应用头文件:【& class-dump -H XX -o ./Headers】
dumpdecrypted
- 到【github】下载【dumpdecrypted】
- 到【dumpdecrypted】路径下:【& make】, 会生成【dumpdecrypted.dylib】动态库
- 拷贝【dumpdecrypted.dylib】到手机:【 &scp -P 12345 dumpdecrypted.dylib root@localhost:~/】
- 配置环境变量:
- 执行动态库:& DYLD_INSERT_LIBRARIES=XX动态库
- 新建一份动态库代码,load方法里面,写一句打印方法
- 拷贝文件夹:& scp -r -P 12345 test.framework root@localhost:/usr/bin
-
& DYLD_INSERT_LIBRARIES=test.framework XX进程路径
,即可看到测试打印代码
- 拷贝解密后的APP思路:写一个拷贝代码,打包成动态库,依附某一个app,即可拷贝出app解密后的MachO
- 【& DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib XX进程路径】
- 【& ls】后,可以看到 【XX.decrypted】
- 通过iFunBox拷贝出来
- 通过命令从手机里面拷贝出来:【& scp -P 12345 root@localhost:~/XX.decrypted ~/Desktop】
- 拷贝出app包【& ps -A】【& cd app路径】【& ls】【& cd Frameworks/】
注意点
补充
- 查看目录【& pwd】
- 关于【DYLD:动态连接器】
a.连接所有的动态库
b.包括【可执行文件:MachO】
- 动态库运行的方式:
a.注入到app
b.被【DYLD】加载
c.依附到某个进程上
- 查看文件架构【& file test.framework/test】
- 查看进程:【& ps -A】
- 动态库运行:dyld[动态连接器]
- dyld_insert_libraries