【发布时间】:2011-06-04 20:31:27
【问题描述】:
我正在尝试组合一个可以在多个应用程序中重复使用的 iOS 包。我希望能够将它捆绑起来供其他人轻松插入和使用,并且我希望将代码混淆,以便没有人可以阅读它。
在构建框架、静态库或其他解决方案之间,您有什么建议?为什么?
【问题讨论】:
标签: objective-c ios frameworks obfuscation static-libraries
我正在尝试组合一个可以在多个应用程序中重复使用的 iOS 包。我希望能够将它捆绑起来供其他人轻松插入和使用,并且我希望将代码混淆,以便没有人可以阅读它。
在构建框架、静态库或其他解决方案之间,您有什么建议?为什么?
【问题讨论】:
标签: objective-c ios frameworks obfuscation static-libraries
如果您要为 iOS 分发,您有两种选择:
既然你问的是隐藏的东西,我不认为#2 是你要找的。p>
至于#1,你能做的最好的就是不要告诉第 3 方用户更多的东西。他们仍然可以使用运行时来查找方法和属性以及实例变量等。如果您在 C 领域做所有事情(即没有 Objective-C 类),那么他们仍然可以使用像 @987654321 这样的东西@ 转储符号。
简而言之:
可能不值得尝试“混淆”您的代码。只需告诉他们他们需要了解的内容,然后给他们一个 .a 文件和他们需要的标题。
【讨论】:
框架是共享代码的标准 Cocoa 方法。您可以将框架分发为已编译的代码库和公共标头的集合,而无需使任何底层的 Objective-C 源代码可见。当然,专门的黑客仍然可以读取机器代码,但这将是一项艰巨的任务,而且可能不值得他们花时间在上面。
如果您真的关心敏感代码,您可以考虑使用基于 Internet 的服务,在该服务中,您的库调用您控制下的远程服务器以执行一些业务逻辑。这种方法涉及更多,并且不能为您的客户提供那么多的灵活性。
【讨论】: