如何加密或混淆客观c代码?

时间:2011-06-06 07:56:23

标签: objective-c ios obfuscation

  

可能重复:
  iPhone/iPad App Code Obfuscation - Is it Possible? Worth it?

我花了很多时间在这上面,我无法找到一个完美的答案。这就是我决定在这里提出问题的原因。我有一个iPhone应用程序,并希望加密代码,以防止类转储或otool实用程序。 (用于从可执行文件中转储标头的工具)。我想知道有没有办法加密源代码或混淆源代码?

3 个答案:

答案 0 :(得分:16)

它比最初看起来要复杂得多。任何破坏方法名称的工具都有可能捏造:

  1. KVC合规
  2. 使用动态生成的选择器
  3. Nib文件兼容性
  4. 协议一致性
  5. 方法继承
  6. 混淆只是另一层要处理的问题;经常混淆很容易逆转。实际上不可能“加密”您的类,因为Objective-C运行时和Cocoa框架将不知道如何解密它。任何坚定的人都会最终弄清楚你的计划是如何运作的。

答案 1 :(得分:7)

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

小型开发商既不便宜又无法使用,但如果您是为大型公司开发,那么您应该考虑它们。

通过修改代码路径并添加冗余指令来完成混淆,以便混淆任何试图对代码进行反向工程的人。通过向代码添加校验和并在函数内嵌入校验和检查来完成防篡改。您可以创建一个相互依赖的校验和网络,这使得绕过它们非常困难。还有一些其他的事情可以做,但你真的需要与这个领域的专家交谈。

除了早先的答案之外,Apple并没有对二进制文件进行加密,只是对它们进行了签名。在越狱设备上反向工程和修改app二进制文件相当容易。

答案 2 :(得分:-2)

显然,根据this answer,Apple会对所有iPhone应用程序加密iPhone二进制文件。

我不再担心了。