【问题标题】:How to encrypt or obfuscate objective c code? [duplicate]如何加密或混淆目标 c 代码? [复制]
【发布时间】:2011-09-09 02:24:23
【问题描述】:

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

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

【问题讨论】:

  • 为什么?如果您告诉我们您真正想要做什么,可能会有更好的方法。
  • 我已经看到class-dump工具可以很容易地转储出头部并且可以看到函数/方法签名。我想加密头文件(转储出来的头文件应该加密)或在我的代码中实现代码混淆。这就是我需要实现的。希望您能得到更多信息。
  • @Black Frog :我也尝试过这种方法,但它对我不起作用。 :(
  • 类转储工具转储头文件的内容,它们以人类可读的形式转储编译的接口。
  • @Jeremy :但无论如何它会打印出我们在头文件中声明的签名,对吗?

标签: objective-c ios obfuscation


【解决方案1】:

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

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

混淆只是要处理的另一层;通常混淆很容易被逆转。实际上不可能“加密”您的类,因为 Objective-C 运行时和 Cocoa 框架不知道如何解密它。任何有足够决心的人最终都会弄清楚你的程序是如何工作的。

【讨论】:

  • 建立版权保护的人通常会得到报酬。删除它的人通常不会。最后——如果你做对了——你很有可能会被逆向者放弃,因为它需要太多时间来理解或反击你的保护措施。但你是对的,这不是最终的解决方案——只是最好的解决方案。
【解决方案2】:

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

对于小型开发人员来说,它们既便宜又容易使用,但如果您正在为大型公司开发,那么您应该考虑它们。

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

在前面的答案的基础上,Apple 不加密二进制文件,而只是对其进行签名。在越狱设备上逆向工程和修改应用程序二进制文件相当容易。

【讨论】:

【解决方案3】:

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

我不会再担心了。

【讨论】:

  • D'oh,我错过了他提到它是 iPhone 应用程序的部分。
  • @dreamlax:是的,很容易做到。我将添加 ios 标签。
  • 使用clutch之类的工具可以在越狱设备上轻松删除加密。
猜你喜欢
  • 2012-06-14
  • 2016-11-21
  • 2023-02-10
  • 2012-03-10
  • 1970-01-01
  • 2013-04-29
  • 2018-10-19
  • 2013-03-24
  • 2018-08-01
相关资源
最近更新 更多