我正在用Cocoa制作一个应用程序,想知道其中的一些字符串是否容易访问,所以我在上面运行了OTX,但遗憾的是我的所有代码都被发现了。有没有一种方法可以使我的代码更加“安全”,或者至少加密/隐藏字符串?我想加密字符串的原因是它是服务器的密码。我不需要它非常安全,我只是不希望密码太容易被发现。
谢谢任何帮助。
谢谢任何帮助。
1. 避免在安全代码中使用ObjC。
因为ObjC的类系统严重依赖于运行时反射,整个接口需要与可执行文件一起包含。这使得像class-dump
这样的工具可以轻松恢复二进制文件的源@interface。
因此,安全代码函数应该编写为C函数,而不是ObjC方法。
2. 使用strip
。
默认情况下,编译器会保留所有私有符号(这允许堆栈跟踪更易读)。您可以使用strip
删除所有这些符号。
3. 混淆。
上述步骤只能隐藏代码逻辑。但如果密码是一个常量字符串,使用strings
实用程序可以立即看到它。您可以通过在运行时构造密码(例如,在文件中存储ROT-13编码的密码)来混淆密码。
4. 或者改变您的设计。
无论您的保护系统有多好,由于黑客对他们的机器拥有完全控制权,给予足够的时间,他们总是能获胜。最好重新设计,比如为什么密码必须随可执行文件一起?或者为什么需要全局密码?
+(NSString*)getPassword;
,而是在类外创建一个 static NSString* getPassword(void);
。 - kennytm