Trainer (games)

[2] In the cracker group release lists and intros, trained games were marked with one or more plus signs after them, one for each option or cheat in the trainer, for example: "the Mega Krew presents: Ms. Astro Chicken++".

With object-oriented programming the memory objects are often stored dynamically on the heap but modern operating systems use address space layout randomization (ASLR).

This requires reverse engineering methods like API hooking of malloc() and free(), code injection or searching for static access pointers.

Together with ASLR, the binaries are loaded to a different virtual memory address each code execution.

[6] For the configured memory offset the game trainer determines the load address as well and adds it back during run-time.

API hooking works completely differently: A preloader loads a library into the game process while starting it.

The idea is to close the game process directly after the value is found and the object still exists.

The object size as well as the value offset inside it are discovered and the jump-back code address in the game binary can be determined by backtracing.

Also adaptation to other game and compiler versions becomes simple as all it takes is to look for a library function call with known parameter (the object size) in the disassembly.

[8] Some of the advanced techniques that Cheat Engine trainers supports include code injection, code shifting and the flexibility and versatility provided by its Lua scripting[9][10] which has phased out other trainer making tools which lacked the support for some of these features.