我正在我的可可mac应用程序上做实验,发现我可以使用Github上提供的另一个类转储可执行文件来转储应用程序可执行文件的所有头文件(.h文件(。
我想知道如何防止我的应用程序使用任何第三方可执行文件(如类转储(进行头文件转储。
转储命令:
./class-dump -H /Users/abc/Documents/app -o ./Headerfiles
任何建议
提前感谢
我怀疑是否有任何方法可以防止这种情况发生。
Objective-C类、方法、属性、协议和类别信息都是在运行时动态注册的。因此,可执行文件的__DATA
部分必须包含所有这些信息。像class-dump
这样的工具只需对这些表进行反向工程,就可以创建一个等效的接口(.h
(文件。
解决这个问题的唯一方法是在运行时以编程方式创建类,在我看来这太疯狂了。
一个丑陋的、半解决方案——充满了潜在的问题——将是尝试某种形式的代码混淆:
#define MyClass m0
#define doSomething m1
#define userClickedButton m2
#define hitCount m3
@interface MyClass
- (void)doSomething;
- (IBAction)userClickedButton:(id)sender;
@property NSUInteger hitCount;
将作为出现在编译的应用程序中
@interface m0
- (void)m1;
- (void)m2:(id)o;
- (unsigned long)m3;
- (void)setM3:(unsigned long)n;