所谓砸壳,到底砸了个啥?

上架到AppStore的ipa包会被苹果自己的专有的分发证书【姑且这么理解吧】重新签名且对包里的二进制文件、其他各种framework和dylib都进行了加密加壳,当我把没砸壳的二进制文件和已经砸壳的二进制文件拖到MachOView中对比时,发现并没有太多的不一样,目前唯一发现是LC_CODE_SIGNATURE和最后的Code Signature段不一样,那我们所谓的砸壳,砸的那个壳到底是个什么东西?它放在哪儿的?

对这个问题理解的不够深入,有懂的大佬来说说?

將記憶體的數據恢復至包內
這樣通過ida hopper 才能看到一二
我簡單理解是這樣…

1 个赞

砸壳就像给它脱了衣服

只有主程序的头部一小段数据是加过密(目前是4k)的来防止静态分析等行为。砸就是替换这一小段数据。
framework没有加密。

你试试用ida这些看,你会发现代码段是加密的,汇编看不了

mach-o文件里有一个load command 叫 encryption_info_command,里面有加密部分的偏移和大小,准确的说这个过程应该叫dump,是从运行app的内存中dump解密部分替换真实文件中的加密部分。