Game Reverse Engineering 101
oder: Wie modifiziere ich ein Spiel?
Was ist Reverse Engineering?
int main() {
  Game myGame;
  myGame.init();
  while(myGame.running) {
    myGame.handleInput();
    myGame.updateLogic();
    myGame.render();
  }
  return 0;
}
mov     ds:dword_55606C, ecx
add     edx, [eax+0Ch]
add     ebx, [eax+10h]
add     edx, ds:dword_5D1BD0[ebx*4]
add     edx, ds:dword_5913C8
mov     esi, eax
mov     edi, edx
mov     eax, [esi+4]
mov     ebx, [esi+8]
mov     ecx, [esi]
...
... super für einen 🖥️ und schlecht für 🤷🏻‍♂️
  • Binärcode mit einem Disassambler in Maschinensprache übsersetzen
  • Maschinensprache nun mit einem Decompiler in eine Hochsprache übersetzen
  • Neuer Code != Original Code

Neugier

Spaß

Profit

Anerkennung

  • Remakes / Open Source Engines (OpenRA, OpenAge, freeablo)
  • Patches (Bugfixes)
  • Mods (TurboHUD, GTA Multiplayer)
  • Private Server (WoW)
  • Cheats (Trainer, Wallhacks, Aimbot)
Disassembler (IDA)
Memory Scanner (Cheat Engine)
Debugger (x64dbg)
Decompiler (Snowman)
Memory Dissector (ReClassEx)
Binary Parser (Kaitai Struct)
Demo
🎉🎉🎉
🤔

Und danach?

🎉 Dankeschön ❤️
👏🏻👏🏻👏🏻👏🏻👏🏻
  • Mail: michael@malura.de
  • Twitter: @devnetik