iOS逆向之旅(越狱篇) — 砸壳

小小科普

壳是什么鬼

我们把自己的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版本
iOS逆向之旅(越狱篇) — 砸壳_第1张图片
  • 删除后面的版本数字后缀
  • 添加到手机的/usr/bin目录下
    scp -P 6699 Clutch root@localhost:/usr/bin
  • 给可执行权限
    chmod +x Clutch
使用
  • 查看当前手机所有未砸过壳的App $Clutch -i
iOS逆向之旅(越狱篇) — 砸壳_第2张图片
  • 砸壳
    $Clutch -d 3 这里的3是索引,代表我砸的事微信的壳
    接下来就会自动帮我们砸壳
iOS逆向之旅(越狱篇) — 砸壳_第3张图片

砸壳后,会把路径给到我们,我们就可以通过ifunBox取出砸壳后的ipa包,或者通过scp指令。这样就成功了~嘿嘿

至于如何判断砸壳成功与否,可以参考iOS逆向之旅(进阶篇) — 重签名APP(一) 说过的,我就不累赘了

Dumpdecrypted

安装
  • 从github上面把Dumpdecrypted下下来
    $github clone https://github.com/stefanesser/dumpdecrypted.git
  • 编译
    $make,编译后会生成.o与.dylib文件
iOS逆向之旅(越狱篇) — 砸壳_第4张图片
  • 将dylib放到手机里面
    scp -P 6699 dumpdecrypted.dylib root@localhost:~
  • 将这个dylib插入到正在运行的微信中
    DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/...(微信进程的路径)
  • 然后我们就可以获取到解密后的微信的Mach-O文件
iOS逆向之旅(越狱篇) — 砸壳_第5张图片

最后拿到解密后的Mach-O文件,我们就可以为所欲为了~~

你可能感兴趣的:(iOS逆向之旅(越狱篇) — 砸壳)