64位IOS系统中敲壳提取32位程序

测试机一直是5s和6,Clutch敲壳,实际是一个内存dump的过程,所以每次敲壳后的程序载入IDA都不能开心的F5来查看交叉引用以及简要逻辑。


终于决定要搞下这个坑,发现竟然并不是太简单的事情,或许还是IOS的相关知识掌握的不多。


首先,我们查找到lipo这个东西。lipo是command-tools里面的工具,之前或许是随着xcode一起下发的,貌似某个6.x的版本之后,就独立了出来,需要单独下载。

xcode-select --install

此处也是一个坑,为了文件交换的方便,我使用的是一个9.8的mac虚拟机,里面的xcode也是很早期的了,所以lipo -info查看fat文件时,并没有显示出arm64的结构。


lipo工具可以合并也可以拆分,这里我们需要的是拆分功能。

lipo xxx -thin armv7 -output xxx.armv7

thin功能,可以可以拿到一个只包含armv7的版本,这样重新替换原有app,就可以以32位方式进行运行,进行内存dump后,也就拿到了32位程序,看起来好像很简单。


然后替换后的程序是不可以执行的,查看crash信息,内存错误,无法执行。


中间的插曲是我自己xcode写了一个demo,去测试只包含armv7架构的程序在iphone5S上面的运行,发现是编译无法通过,在build setting中还有一个问题。

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386)

在5S以后,App store的审核已经不允许不包含64位架构的程序上架了,但是貌似不应该不支持编译出来自己测试是不是呢?然而换5,不更改项目属性的前提下,直接编译运行成功,就是说xcode根本不让32位程序运行在64位上?

设置”Build Active Architecture Only”为“NO”

这里这个选项是说,是否只编译唯一的架构。理论上来说,这里因为我只想编译出armv7的版本,特意设置yes。

剧情跟我们想的不一样,设置为NO以后,5S成功运行,导出文件lipo info后却发现,程序的确只包含了armV7,跟我们想要的结果是一样的,所以这个选项到底想做什么,不能懂了,至少证明了32位app是可以运行在64位系统的了,至此,问题还没解决,已经用掉我一天的时间。


lipo不能运行,自己祭出010editor自己修改试试吧,需要做的只是告诉系统,我是一个32位程序,我身上并没有打包arm64代码。理论上可以做到,不过我尝试无数次之后,或许还是对于mach-o文件格式不够精通吧,毕竟只局限于知道结构大概。


仅仅靠与自己的测试demo对比的情况下,头部修改一样,并且offset也无异常的情况下,程序依然是crash。这里就不贴图了,依然是消耗掉大量时间。


痛定思痛,重新回头看lipo,发现lipo带有一个remove参数

lipo xxx -remove arm64 -output xxx.remove

导入替换,程序成功运行!

64位IOS系统中敲壳提取32位程序_第1张图片

64位IOS系统中敲壳提取32位程序_第2张图片

上面两图中,一个thin一个remove,thin是只包含,remove是只移除,对于只有armv7和arm64的程序来说,只包含一个与只移除另一个的结果貌似应该是一样的,然而结果的确有点出乎意料,thin后的程序是少了一个头的。

虽然可以运行了,事情还没有结束,clutch无法敲壳!

看clutch日志,貌似他还是在以64的方式在dump,看得到吃不着的感觉的确酸爽,难道去改clutch的代码强制32dump?貌似时间不允许了,看懂代码找到关键点修改好不知道要多久。重新找敲壳工具。

https://github.com/stefanesser/dumpdecrypted

下载后直接make,生成dumpdecrypted.dylib,此文件要放入需要敲壳的app的Documents目录。这里也有小技巧,因为人肉查找这个目录是在是个体力活。

#cycript -p pid
#[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

导入成功后,到documents目录,执行敲壳

DYLD_INSERT_LIBRARIES=/path/to/dumpdecrypted.dylib /path/to/executable

成功解出,欢快的F5之~



PS:每次替换文件记得修改权限。

chmod 755 xxx

中间遇到的小坑实在令人发指,期间有些问题问到很多群里,冷嘲热讽,浪费很多时间,被我怒喷一记,话说实在不懂这些不能解决根本问题的人,在一个QQ群里刷出的什么存在感。


你可能感兴趣的:(ios,arm64,armv7,敲壳)