我正在编写一个应用程序,出于安全原因,我想混淆从静态方法返回的值。调用静态方法的结果ClassA
应该是 aBOOL
但我想让攻击者尽可能难以获得返回的真实值(即我不想返回 a BOOL
,我想返回一些垃圾看起来是随机的,但在某种程度上是有意义的)。
// in ClassA
returnValue = [ClassB staticMethod];
BOOL actaulReturnValue = // some magic to de-obfuscate returnValue
例如:返回 1024 位大部分是随机的垃圾,但在某处是一个有意义的数字(可能每次都有不同的位)。
另一个例子:返回 10 个左右看似随机的数字,但如果这 10 个数字出现在 pi 的前 1000 个数字中,那么实际值是TRUE
(接受 10,000,000,000 误报率中的 1 个的事实)。
这是我能想到的两个例子,但我把它留给 stackoverflow 社区来帮助思考其他(可能更好)的方法。如果您还可以提供代码,则可以加分。
编辑:逆向工程越难越好。如果我可以运行 cycript 并确定游戏的秘密,那么游戏就结束了。
编辑 2:即使攻击者知道我是如何混淆返回值的,它仍然应该很难(如果不是不可能的话)找出真正的值(这也是我的第二个示例的问题)
编辑 3:我以对 iOS 应用程序进行渗透测试为生。我知道内存中的任何内容都可以读取,因为我每天都在为客户做这件事。我也不是要暗示混淆和安全是一回事。话虽如此,我正试图找出一种方法来防止攻击者修补单个 API 调用以始终返回 FALSE。
谢谢!