ugtrain

Bild des Benutzers sriemer

ugtrain - der universelle Elite Game Trainer

ugtrain

Seit Verlassen der guten alten DOS-Zeiten werden Spiele nicht mehr in C oder mit rein statischem Speicher entwickelt, sondern meist in C++ objekt-orientiert. Das bedeutet, dass Speicherobjekte dynamisch auf dem Heap erzeugt werden. Linux verwendet jedoch Address Space Layout Randomization (ASLR). Daher hat man ohne Informationen aus dem Inneren des Spielprozesses kaum noch eine Chance reproduzierbar Speicherwerte zu verändern. Der ugtrain ist der einzige universelle Game Trainer, der dieser Aufgabe gewachsen ist. Er unterstützt bereits Linux und ist unter der GPLv3 lizensiert.

Es ist ein Kommandozeilentool, da diese auch als Backend für GUI-Anwendungen dienen können. Der ugtrain verwendet simple Konfigurationsdateien, die mit anderen ausgetauscht werden können. Ein echter Game Trainer braucht selbst keine statische Speichersuche. Das kann das CLI-Tool "scanmem" bereits sehr gut. Der ugtrain integriert scanmen und unterstützt jedoch beim Auffinden von dynamisch erzeugten Speicherobjekten in vier Auffindungsschritten:

1. Auffinden der Speicherallokierungsgröße
2. Verifizieren der Speicherallokierungsgröße
3. Backtrace: Auffinden der Code-Rücksprungadresse von "malloc" im Spiel-Binary
4. Auffinden des Reverse-Stack-Offsets an dem sich die Code-Adresse befindet

Reverse Engineering Methoden (z.B. API Hooking und Disassemblierung) sind dafür notwendig. Der ugtrain verwendet Preloader-Funktionalität, die mit "LD_PRELOAD" die Auffindungs-Bibliothek (libmemdisc) oder die Hacking-Bibliothek (libmemhack) in den Spielprozess lädt. Der Spielprozess und ugtrain kommunizieren dann über FIFOs mit einander. Damit weiß ugtrain sehr genau wann ein interessantes Speicherobjekt erzeugt wird und kann mit "ptrace()" alle Speicherwerte im Inneren verändern.

Der ugtrain liefert Beispiel-Konfigurationen für FOSS Spiele zusammen mit automatischer Adaption an Compiler/Distributions-Unterschiede. Damit lässt sich schnell beweisen, dass das Tool auch reproduzierbar funktioniert. Das bekannte Linux-Spiel "Chromium B.S.U." ist eines der Beispiele.

Rechtliches

Bitte genau lesen! Fast nur Open Source Spiele erlauben Cheating. Bereits die Veränderung von statischem Speicher mit "ptrace()" führt in Deutschland zur Urheberrechtsverletzung, wenn die Spiel-Lizenz keine Modifikation zulässt. Es ist zudem auch stark von Cheating bei Multiplayer- und Online-Gaming abzuraten. Hier könnte gegen weitere Gesetze verstoßen werden, da man damit andere Spieler beinträchtigt.

Das bedeutet im Endeffekt: Bitte immer genau die Endnutzer-Lizenz des Spiels lesen! Im Zweifelsfall auf Spiele unter anerkannten FOSS Lizenzen (z.B. GPLv2) zurückgreifen und immer nur den Computer im offline Singleplayer-Modus betrügen! Bitte nutzt ugtrain für nichts anderes!

 

Installation

Das Tool befindet sich noch in starker Entwicklung. Daher gibt es noch kein Distributions-Paket. Es muss erst mit den "autotools" gebaut werden.
Unterstützung von einem Build- und Autotools-Experten wäre sehr willkommen.

Benötigte Pakete: "autotools-dev", "autoconf", "automake", "g++", "make" "libtoolize" und "libtool"

1. Generierung der fehlenden autotools-Dateien:
$ ./autogen.sh

2. Den Build konfigurieren und die Makefiles generieren:
$ ./configure --prefix=/usr

3. Die ausführbaren Dateien kompilieren:
$ make

4. ugtrain und die Bibliotheken nach /usr installieren:
$ sudo make install

5. Den ld.so Cache neu generieren (siehe "man ld.so"):
$ sudo ldconfig -v

Benutzung

Im Prinzip ist das sehr einfach mit dem folgenden Befehl:
$ ugtrain <config>

Es sollten jedoch zusätzlich "objdump" (Paket "binutils") und "scanmem" installiert sein.

Die Hilfe zeigt mehr:
$ ugtrain --help

Das 64-bit Chromium B.S.U. Beispiel wird wie folgt gestartet:
$ ugtrain -P examples/chromium-bsu64

Das Tool fragt nach einer automatischen Adaption beim ersten Start. Dieser sollte zugestimmt werden.
Im Zweifelsfall kann man sich gern das Adaptions-Shell-Skript aus der Konfiguration anschauen. Es nutzt primär "objdump -D" und "grep".

Quelltext und Projekt

https://github.com/ugtrain/ugtrain

Neben-Projekt

http://sourceforge.net/projects/ugtrain/

Beispiele

Chromium B.S.U.
Cube 2: Sauerbraten
SuperTux 2
Warzone 2100

Videos der Beispiele

http://www.youtube.com/watch?v=mTpC30tSMqU
http://www.youtube.com/watch?v=1GcppQNpdTc

Screenshots und Videos
Mastodon