我想在我的iphone游戏中加密一些我的obj c类来处理openfeint数据和处理分数的类。
我听说有一种方法可以加密这些数据,作为另一个安全级别,至少足以阻止一些人破解它并在越狱的iPhone上伪造分数,然后垃圾邮件排行榜。
这是如何完成的,保护这些数据的好方法是什么,并阻止一些人试图欺骗数据?
由于
答案 0 :(得分:2)
真正加密已编译的代码可能比它的价值更麻烦。您必须将要解密的代码隔离到动态库中,并在内存中解密后手动加载库。动态库以及在运行时可能用于修改代码的其他方法在Apple与iOS一起使用时不受欢迎。
使用Objective-C,您基本上可以将头文件构建到代码中。这使您可以更轻松地在应用程序中进行挖掘。你可以在C中做任何可以剥离符号的东西都会稍微难以理解。您也可以使用#define来模糊您的类和方法名称。这远不是加密,但更容易实现,并且不太可能引入古怪的错误。
#define MyNicelyNamedClass somegarblegarble
#define myNicelyNamedMethod othergarblegarble
@interface MyNicelyNamedClass
-(id) myNicelyNamedMethod;
@end
对于开发人员而言,这是一种相对轻松的方式,使其Objective-C代码对其他人不那么明显。它与javascript混淆一样有效,也就是说它是阻止许多偶然攻击者的又一个小障碍。
如果你选择有意义但有误导性的名字而不是直接垃圾,你甚至可能会欺骗别人花费数小时来挖掘错误的代码。不是你会知道的,但这是一个令人满意的想法。
答案 1 :(得分:1)
加密类会遭受任何DRM或类似安全系统的“带锁密钥锁定”问题。
您正在寻找的是自修改代码,其中代码稍后由应用程序加载和解密,或者作为机器代码存在于二进制文件中,并在运行时通过应用程序的密钥进行修改。
请注意,您可能会创建一些非常微妙且有趣的错误,并且您的方法将被绕过(这可能需要额外的一天)。