如何encryption或混淆目标c代码?

可能重复:
iPhone / iPad应用代码混淆 – 可能吗? 值得?

我花了很多时间在这方面,我找不到一个完美的答案。 这就是为什么我决定把我的问题放在这里。 我有一个iPhone应用程序,并希望encryption代码,以防止类转储或otool实用程序。 (用于从可执行文件转储标题的工具)。 我想知道有什么方法来encryption源代码或混淆源代码?

这比起初看起来要复杂得多。 任何破坏方法名称的工具都有可能让人糊涂:

  1. KVC合规
  2. 使用dynamic生成的select器
  3. 笔尖文件的兼容性
  4. 协议一致性
  5. 方法inheritance

混淆只是另一个要处理的层面; 经常迷惑很容易颠倒。 因为Objective-C运行时和Cocoa框架不知道如何解密它,所以“encryption”你的类是不可能的。 任何确定的人最终会弄清楚你的程序是如何工作的。

实际上,您可以使用专业的第三方工具提供一些混淆和篡改保护。 有两家公司,我知道,提供工具或服务来做到这一点:Arxan和irDato。

既不便宜,也不便于小型开发商使用,但如果您正在为一家大型公司开发,那么您应该考虑它们。

混淆通过修改代码path并添加冗余指令来完成,以混淆试图对代码进行反向工程的任何人。 篡改保护是通过向代码添加校验和并在函数内embedded校验和来完成的。 您可以创build一个互相依赖的校验和networking,这使得绕过它们变得非常困难。 还有其他一些可以做的事情,但你真的需要与这方面的专家交谈。

除了早先的答案之外,苹果公司不会对二进制文件进行encryption,而只是对它们进行签名。 在越狱设备上逆向工程和修改应用程序二进制文件是相当容易的。

显然,根据这个答案苹果encryptioniPhone的二进制文件,当然所有的iPhone应用程序。

我不会再担心了