我正在对可可mac应用程序进行实验,发现我可以使用Github上的另一个class-dump可执行文件转储应用程序可执行文件的所有头文件(。h文件)。
我想知道如何使用任何第三方可执行文件(如class-dump)阻止我的应用程序从头文件转储。
转储命令:
./class-dump -H /Users/abc/Documents/app -o ./Headerfiles
任何建议
预先感谢
答案 0 :(得分:1)
我怀疑有什么方法可以防止这种情况。
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;