简单Objective-C中的快速且易用工具,通过扫描(搜索)来避免内存欺骗。参见igameguardian,“作弊引擎”...
它是一种作弊方法,通过搜索模式访问应用程序/游戏的物理内存。此类常见的作弊工具可以轻松找到Int8、Int16、Int32和Float32类型,并修改它们。
OBME(T变量)返回应用于“变量”位的异或函数的结果。
return (variable ^ mask);
#define OBME(value) // takes a value of any primitive type.
int64_t value = 100;
printf("Original value: %lld \n", value);
value = OBME(value);
printf("Obfuscated value: %lld \n", value);
value = OBME(value);
printf("Restored value: %lld \n", value);
输出
Original value: 100
Obfuscated value: 7095209165337824491
Restored value: 100
混淆值会在每次启动应用程序时更改,这是因为在生成时使用了随机生成的位掩码。
int64_t value64 = 1;
uint32_t value32 = -2;
int8_t value8 = 3;
float valueF = 4.4f;
double valueD = 5.2f;
// Obfuscating values
value64 = OBME(value64);
value32 = OBME(value32);
value8 = OBME(value8);
valueF = OBME(valueF);
valueD = OBME(valueD);
// Restoring values
value64 = OBME(value64);
value32 = OBME(value32);
value8 = OBME(value8);
valueF = OBME(valueF);
valueD = OBME(valueD);
float _score;
void init() {
_score = OBME( 0.0f );
addToScore(10);
addToScore(25);
printScore(); // prints "The score is 35.0"
printf("%f\n", _score); // prints a random number
}
void addToScore(float add) {
_score = OBME( OBME(_score) + add );
}
void printScore() {
printf(@"The score is %f \n", OBME(_score));
}
真实值永远不会曝光。