TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Dec 2014 |
Maintained by Unclaimed.
Fast and easy to use tool in simple OBJECTIVE-C to avoid memory cheating by scanning (searching). See igameguardian, "Cheat Engine"…
Well, it's a cheating method that access to the physical memory of an app/game searching patterns. Common cheating tools like this are able to find Int8, Int16, Int32 and Float32 types easily and modify them.
OBME(T variable) returns a xor function applied to the bits of "variable".
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);
Output:
Original value: 100
Obfuscated value: 7095209165337824491
Restored value: 100
The obfuscated values change each time the app is started, this is because they are generated using a random generated mask of bits.
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));
}
Real values are never exposed.