OBME 0.2.1

OBME 0.2.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Unclaimed维护。



OBME 0.2.1

  • 作者
  • Manu Mtz-Almeida

OBME-ios: 反混淆内存

简单Objective-C中的快速且易用工具,通过扫描(搜索)来避免内存欺骗。参见igameguardian,“作弊引擎”...

什么是通过扫描的内存欺骗?

它是一种作弊方法,通过搜索模式访问应用程序/游戏的物理内存。此类常见的作弊工具可以轻松找到Int8、Int16、Int32和Float32类型,并修改它们。

IDEA: 修改存储游戏评分的变量。

  1. 如果在t=0时,评分是50,作弊者将在游戏的RAM中搜索该值。
  2. 当然,有成千上万个变量具有该值,所以他回到游戏中,将分数改为75(例如,他杀死了一个新伙伴)
  3. 他执行一个新的过滤,他找到了从50变为75的指针,bingo!!!他知道分数变量的地址。
  4. 现在他可以改变它。

OBME是如何工作的?

  1. 产生并存储为“掩码”的是64位加密伪随机数。
  2. OBME(T变量)返回应用于“变量”位的异或函数的结果。

    return (variable ^ mask);

API

#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));
}

真实值永远不会曝光。