防止标题通过可可OSX应用程序中的可执行文件转储

时间:2018-12-13 15:36:27

标签: macos security cocoa executable code-security

我正在对可可mac应用程序进行实验,发现我可以使用Github上的另一个class-dump可执行文件转储应用程序可执行文件的所有头文件(。h文件)

我想知道如何使用任何第三方可执行文件(如class-dump)阻止我的应用程序从头文件转储。

转储命令:

./class-dump -H /Users/abc/Documents/app -o ./Headerfiles

任何建议

预先感谢

1 个答案:

答案 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;