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

可能重复:
Objective-C代码混淆

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

在build立框架,静态库或其他解决scheme来完成这个任务之前,你会推荐什么?为什么?

框架是共享代码的标准Cocoa方法。 您可以将一个框架作为一个编译的代码库和一个公共头文件集进行分发,而不会使任何底层的Objective-C代码可见。 当然,一个专门的黑客仍然可以读取机器码,但是这将是一个很大的工作,可能不值得花费在这个时间上。

如果你真的关心敏感代码,你可以考虑一个基于互联网的服务,在这个服务中你的库调用一个你的控制下的远程服务器来执行一些业务逻辑。 这种方法涉及的比较多,而且不能为客户提供很大的灵活性。

如果您正在为iOS分发,则有两种select:

  1. 分发预编译的二进制文件和头文件
  2. 分配来源

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

至于#1,最好的办法就是不要告诉第三方用户更多的东西。 他们仍然可以使用运行时查找方法和属性以及实例variables等。如果你在C-land中做了所有事情(即没有Objective-C类),那么他们仍然可以使用诸如otool类的东西转储符号。

简而言之:

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