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

Joh*_*568 26 obfuscation objective-c ios

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

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

dre*_*lax 16

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

  1. KVC合规
  2. 使用动态生成的选择器
  3. Nib文件兼容性
  4. 协议一致性
  5. 方法继承

混淆只是另一层要处理的问题; 经常混淆很容易逆转.实际上不可能"加密"您的类,因为Objective-C运行时和Cocoa框架将不知道如何解密它.任何坚定的人都会最终弄明白你的计划是如何运作的.

  • 建立复制保护的人通常会得到报酬.删除它的人通常不会.最后 - 如果你做对了 - 你很可能会有一个反对者放弃,因为它只需要花费太多时间来理解或反击你的保护.但你是对的,这不是最终的解决方案 - 只是最好的解决方案. (3认同)

And*_*rew 7

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

对于小型开发商来说既不便宜也不容易获得,但如果你是为大公司开发,那么你应该考虑它们.

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

除了早先的回答,Apple不会对二进制文件进行加密,只是对它们进行签名.在越狱设备上反向工程和修改app二进制文件相当容易.

  • Apple*会对通过应用商店分发的二进制文件进行加密.请参阅[黑客攻击和保护iOS应用程序](http://my.safaribooksonline.com/book/-/9781449325213)第156-162页.但是,加密很容易删除. (6认同)