2011-01-22 57 views
1

我想加密我的iphone游戏中的几个obj c类,它处理openfeint数据和处理分数的类。如何加密客观C类

我听说有一种方法可以加密这些数据以充当另一个安全级别,至少足以阻止某些人破解它并在越狱iphone上伪造分数,然后垃圾排行榜。

如何做到这一点,有什么好的技术来保护这些数据,并从试图欺骗数据劝阻一些?

感谢

回答

2

要真正加密编译的代码是比它的价值可能更麻烦。您必须将要解密的代码隔离为动态库,并在解密内存后手动加载库。动态库以及可能用于在运行时修改代码的其他方法在苹果公司与iOS一起使用时遭到了苹果公司的不满。

用Objective-C的本质,你用头船建造到你的代码。这使得在应用程序中进行挖掘变得更加容易。在C中可以做的任何事情,符号可能会被剥离,但稍微难以阅读。你也可以使用#define来混淆你的类和方法名称。这远没有加密,但更容易实现,并且不太可能引入古怪的错误。

#define MyNicelyNamedClass somegarblegarble 
#define myNicelyNamedMethod othergarblegarble 

@interface MyNicelyNamedClass 

-(id) myNicelyNamedMethod; 

@end 

这是一个开发者,使他们的Objective-C代码给别人不太明显的是一个相对简单。它的效果与JavaScript混淆效果一样,也就是说它会阻止许多偶然的攻击者,这是一个更小的障碍。

如果您选择有意义的,但误导性名称,而不是直的垃圾,你甚至可以欺骗某人到花费数小时通过错误代码挖掘。不是你会知道,但它是一个令人满意的想法。

+0

如果方法有参数,这将如何工作? – Pripyat 2011-02-21 21:05:34

1

加密类受到任何DRM或类似的安全系统具有“出货用钥匙锁”的问题。

什么你正在寻找的是自修改代码,其中该代码不论是在装载和后来由应用程序解密,或者是存在于二进制机器代码和通过键的应用程序具有在运行时修改。

请注意,你可能会创建一些非常微妙的,有趣的错误,你的方法将被忽略(这需要有人也许一个额外的一天)。