Pri*_*yat 0 frameworks objective-c
我已经开发了许多框架,我希望随我的应用程序一起提供.我不希望其他人能够使用框架,但我已经看到了诸如class-dump可以轻松恢复标头的实用程序.
我的问题是,如何让我的框架更安全?我知道他们永远不会100%安全,但有一些很好的一般提示可以遵循吗?
谢谢!
bbu*_*bum 18
总之,不要打扰.Objective-C运行时的本质是可用的重要元数据.
现实情况是,有人拿起你的框架并试图嵌入/使用它是非常罕见的.
请注意,代码混淆器并不能很好地工作; 仍然有相当多的元数据必须暴露.您可以走这条路,但是 - 通常情况下 - 它会使调试/崩溃分析变得更加困难而不会真正解决实际问题.
我看到其他人已经指出了混淆的道路(虽然我怀疑答案#define someSelector mmmrrrggglll并没有真正考验过多).
沿着这条路走下去时要考虑的一些具体要点(我确信我错过了很多):
如果您使用KVO/KVC,请确保混淆所有这些呼叫addObserver:*等
如果你的目标是Mac OS X,也不要忘记Bindings!
Interface Builder的xib文件通常包含对实例变量和/或属性和/或方法的引用.别忘了那些!
任何使用运行时内省的东西都需要混淆.
确保你不要混淆系统框架所依赖的任何东西; 不希望继承NSView,比如说,然后混淆drawRect:或initWithFrame:.
在某些情况下,Info.plist可以引用类名和入口点.不要乱用那些!
另外,确保@selector()的每个用法也被正确混淆; 就像为不再存在的方法设置NSTimer触发一样.
确保您的模糊计划还包括为崩溃日志创建非混淆器所需的工程工作.
您还需要考虑如何调试生产二进制文件; 假设您的堆栈跟踪将被混淆. b mmmrrrggglllFTW!
如果您的框架具有符号导出控制,请确保对它们进行模糊处理!请记住,在某些情况下,符号的创建方式因架构和编译器而异.
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |