2011-10-24 43 views
5

我一直在iPhone上玩弄/调试/反汇编二进制文件。iPhone可执行文件(MACH-O)解密

第一个障碍是二进制文件被加密,而拆装者无法读取它们。这可以通过从gdb转储解密的文件内容来克服。

我的问题是关于二进制文件的解密对于具有在LC_ENCRYPTION_INFO部分encryption_id所有的Mach-O可执行文件(这是在程序开始时飞完成),设置为1

  1. 是有为你解密文件的工具?任何建议?
  2. 有没有关于过程如何工作的信息?显然它是 AES加密?使用什么键?自己的程序很容易复制你的 自己的程序吗?

感谢您的指点!

+0

所以,你问的是如何破解其他开发人员的应用程序是什么?我不确定是否StackOverflow是问这个问题的正确地方,因为它的主要焦点是关于开发事情 - 而不是逆向工程由其他开发的应用程序。我认为你在黑客或盗版网站可能会更好。 –

+2

真的吗?我认为堆栈溢出也有反向工程声音! (就像你的堆栈溢出太多的数据一样......) 更为严肃的说法,我认为这对所有开发人员来说都是很好的常识,而不是某种禁忌地下的东西。 – pracheta986919

+0

user986919是对的,如果不知道黑客会如何破解它,你就无法在你的应用中实现安全。如果通常编译的应用程序可以进行反向设计,则可以自行对其进行一些混淆处理。 – Daniel

回答

7

约黑客/破解的/ etc抛开道德问题,让我们来讨论细节:

  • 在OS X上的二进制解密是由执行不偷的MacOS X.Kext(亲切地称为DSMOS)。
  • 在iOS中,二进制解密由FairPlay kext执行。

    在这两种情况下,内核Mach-O加载程序都对此负责。如果你真的需要详细信息,它是处理解密的Apple Protect寻呼机。在XNU的说法中,“pager”是一个组件,它负责获取VM页面并从后台存储中检索它们(交换,内存映射文件等)。这是苹果保护寻呼机呼吁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