混淆可重用iOS包的Objective-C代码

混淆可重用iOS包的Objective-C代码,objective-c,ios,frameworks,obfuscation,static-libraries,Objective C,Ios,Frameworks,Obfuscation,Static Libraries,可能重复: 我正在尝试组装一个可以在多个应用程序中重用的iOS软件包。我希望能够将它捆绑起来,以便其他人能够轻松地插入和使用,并且我希望混淆代码,以便没有人能够阅读它 在构建框架、静态库或其他解决方案来实现这一点之间,您有什么建议?为什么?如果您是针对iOS发行的,您有两种选择: 分发预编译的二进制文件和头文件 分发源 既然你问的是藏东西的事,我不认为你要找的是#2 至于#1,你最好不要告诉第三方用户更多的东西。他们仍然能够使用运行时查找方法、属性和实例变量等。如果您在C-land中执行所有操

可能重复:

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


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

如果您是针对iOS发行的,您有两种选择:

  • 分发预编译的二进制文件和头文件
  • 分发源
  • 既然你问的是藏东西的事,我不认为你要找的是#2

    至于#1,你最好不要告诉第三方用户更多的东西。他们仍然能够使用运行时查找方法、属性和实例变量等。如果您在C-land中执行所有操作(即,没有Objective-C类),那么他们仍然可以使用类似于
    otool
    的东西来转储符号

    简言之:


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

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


    如果您真正关心敏感代码,可以考虑基于Internet的服务,在该服务中,您的库调用您的控件下的远程服务器来执行一些业务逻辑。这种方法涉及的内容较多,并且没有为您的客户提供太多的灵活性。

    因为它被标记为“ios”,所以他不能使用框架。@bbum:在我听来,他说的是一个框架,其他开发人员可以在编译时下载并链接到他们自己的应用程序,不是安装在设备上并在运行时调用的共享框架。但是人们仍然可以调试他的框架并查看所有源代码,因为IOS只允许绑定到框架中的静态库,而不允许绑定到动态库中——这意味着,除非我错了,否则您的答案不是正确的——如果我错了,请纠正我。