【问题标题】:Obfuscate Objective-C code for a reusable iOS package [duplicate]混淆可重用iOS包的Objective-C代码[重复]
【发布时间】:2011-06-04 20:31:27
【问题描述】:

可能重复:
Objective-C Code Obfuscation

我正在尝试组合一个可以在多个应用程序中重复使用的 iOS 包。我希望能够将它捆绑起来供其他人轻松插入和使用,并且我希望将代码混淆,以便没有人可以阅读它。

在构建框架、静态库或其他解决方案之间,您有什么建议?为什么?

【问题讨论】:

    标签: objective-c ios frameworks obfuscation static-libraries


    【解决方案1】:

    如果您要为 iOS 分发,您有两种选择:

    1. 分发预编译的二进制文件和标头
    2. 分发源代码

    既然你问的是隐藏的东西,我不认为#2 是你要找的。​​p>

    至于#1,你能做的最好的就是不要告诉第 3 方用户更多的东西。他们仍然可以使用运行时来查找方法和属性以及实例变量等。如果您在 C 领域做所有事情(即没有 Objective-C 类),那么他们仍然可以使用像 @987654321 这样的东西@ 转储符号。

    简而言之:

    可能不值得尝试“混淆”您的代码。只需告诉他们他们需要了解的内容,然后给他们一个 .a 文件和他们需要的标题。

    【讨论】:

      【解决方案2】:

      框架是共享代码的标准 Cocoa 方法。您可以将框架分发为已编译的代码库和公共标头的集合,而无需使任何底层的 Objective-C 源代码可见。当然,专门的黑客仍然可以读取机器代码,但这将是一项艰巨的任务,而且可能不值得他们花时间在上面。

      如果您真的关心敏感代码,您可以考虑使用基于 Internet 的服务,在该服务中,您的库调用您控制下的远程服务器以执行一些业务逻辑。这种方法涉及更多,并且不能为您的客户提供那么多的灵活性。

      【讨论】:

      • 由于这被标记为'ios',他不能使用框架。
      • @bbum:在我看来,他在谈论一个其他开发人员可以在编译时下载并链接到他们自己的应用程序的框架,而不是安装在设备上并在运行时调用的共享框架.
      • 但是人们仍然可以调试他的框架并查看所有源代码,因为 IOS 只允许绑定到框架中的静态库而不是动态库——这意味着,除非我弄错了——你的答案是不正确的一——如果我错了,请纠正我。
      猜你喜欢
      • 2013-01-29
      • 2012-11-04
      • 1970-01-01
      • 2019-05-30
      • 2016-11-21
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多