我一直在玩iPhone上的/调试/反汇编二进制文件。
第一个障碍是二进制文件已加密,并且解密程序无法读取它们。这可以通过从gdb转储解密的文件内容来克服。
我的问题是关于所有MACH-O可执行文件的二进制文件解密(在程序启动时动态完成),其中LC_ENCRYPTION_INFO部分中的encryption_id设置为1。
感谢您的任何指示!
答案 0 :(得分:7)
关于黑客攻击/破解/等的道德问题,让我们讨论一下细节:
在iOS中,二进制解密由FairPlay kext执行。
在这两种情况下,内核Mach-O加载器都对此负责。如果真的需要详细介绍,那就是处理解密的Apple Protect寻呼机。在XNU的说法中,“寻呼机”是一个负责获取VM页面并从后备存储(交换,内存映射文件等)中检索它们的组件。它是Apple Protect寻呼机,它调用kext(以上两种之一)
有一本很棒的书涵盖了内核细节 - http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651
正如您所说的那样,这种加密很容易被破坏 - 在越狱设备(或具有root权限的PC)上,您可以使用Mach VM API来读取解密图像。这实际上在上面的书中提到过,有一个示例工具可以做到这一点(以及其他VM技巧)。或者,Stefan Esser有一个简单的工具,它使用DYLD_INSERT_LIBRARIES通过在加载时将简单的.dylib注入进程地址空间来解密二进制文件。 github.com> stefanesser> dumpdecrypted。
希望这会有所帮助
TG