小小科普
壳是什么鬼
我们把自己的App提交到App Store后,苹果会帮我们加一层保护壳,有了这个壳的存在,我们就没办法对App进行Class Dump、 IDA 分析、重签名等...
如何砸壳
在iOS 系统中,可执行文件、动态库都得通过 DYLD 加载执行。 在载入 App 时,会先进行 DRM 检查,检查通过则从 App 的可执行文件中,选择适合当前设备架构的 Mach-O 镜像进行解密,然后载入内存执行,这个程序并没有解密的逻辑,当他被执行时,其实加载器已经完成了目标mach-o文件的装载工作,对应的解密工作也已经完成。解密工具本生并不做解密,这些工具所做的工作是,遍历loadcommand中所有LC_ENCRYPTION_INFO或LC_ENCRYPTION_INFO_64的信息,将对应解密后的数据从内存中dump出来,复写到mach-o文件中,生成新的镜像文件,从而达到解密的效果。
Clutch就是利用了这种解密工具,进行砸壳的,这种属于静态砸壳。
还有另一种动态砸壳的方式,就是将苹果帮我解密完加载到内存中的Mach-O文件直接拷贝一份出来,这种的典型代表是dumpdecrypted。
Clutch
安装
- Github上门搜索Clutch,并下载最新的release版本
- 删除后面的版本数字后缀
- 添加到手机的/usr/bin目录下
scp -P 6699 Clutch root@localhost:/usr/bin
- 给可执行权限
chmod +x Clutch
使用
- 查看当前手机所有未砸过壳的App
$Clutch -i
- 砸壳
$Clutch -d 3
这里的3是索引,代表我砸的事微信的壳
接下来就会自动帮我们砸壳
砸壳后,会把路径给到我们,我们就可以通过ifunBox取出砸壳后的ipa包,或者通过scp指令。这样就成功了~嘿嘿😜
至于如何判断砸壳成功与否,可以参考iOS逆向之旅(进阶篇) — 重签名APP(一) 说过的,我就不累赘了
Dumpdecrypted
安装
- 从github上面把Dumpdecrypted下下来
$github clone https://github.com/stefanesser/dumpdecrypted.git
- 编译
$make
,编译后会生成.o与.dylib文件
- 将dylib放到手机里面
scp -P 6699 dumpdecrypted.dylib root@localhost:~
- 将这个dylib插入到正在运行的微信中
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/...(微信进程的路径)
- 然后我们就可以获取到解密后的微信的Mach-O文件
最后拿到解密后的Mach-O文件,我们就可以为所欲为了~~