This page has been robot translated, sorry for typos if any. Original content here.

Schreiben Trainer für Spiele (Spiele-Trainer)

Intro:

Alle von uns, vor langer Zeit oder kürzlich Spiele gespielt - Board, Sport und c ist die Einführung in unser Leben von Computern und Computern. Aufgrund ihres Alters, Gewohnheiten oder einfach der Wunsch, sich zu entspannen und sich nach einem harten Arbeitstag aufzumuntern.

Es scheint, dass das Spiel unbegrenzte Möglichkeiten gibt für Selbstverwirklichung: als Rennfahrer, pilot, Mörder oder sogar einen Gott. Aber der Mann ist so konstituierten - eine gewisse Höhe erreicht, will er noch etwas größer und findet deshalb ein neues Ziel oder neue Chancen.

Es versteht sich, dass, wenn Sie ein Spiel zu erstellen, Entwickler in erster Linie geführt werden, wenn nicht für seinen Geschmack, den Geschmack eines Projektmanagers, manchmal Statistiken. Aber manchmal fühle ich mich wie um die Auswirkungen der Matrix zu verlangsamen, ist das Spiel zu Indiana Jones bewegt, aber nicht die meisten agilen Helden der Spieleindustrie - Killer Hitman, lernte an den Wänden laufen. Für diese Zwecke und sind Trainer.

Theorie:

Trainer (Englisch Trainer.) - ist so konzipiert, das Verhalten des Spiels zu ändern, arbeitet in der Regel direkt mit dem Speicher des Computers.

In den 1980er und 1990er Jahren, eingebettet die Trainer in der Regel direkt Hacker in Spiel-Code. Wenn Sie den ersten Lauf mit Trainer Dialog starten „Möchten Sie betrügt benutzen?“, Wurde auf dem Spiel-Code durchgeführt. Der Trainer verwendet, um die Namen Zeichen der Addition (+), eine für jeden Trainer Option. Zum Beispiel, „ist eine Gruppe von Hackern: Doom +++“ - drei Optionen, zum Beispiel, Unsterblichkeit, unendlich Munition und Teleportation.

Im Gegensatz dazu modernen Trainer, läuft in der Regel als separates Programm, zu spielen, und in ihrem Namen verwendet, um ein einzelnes Pluszeichen mit einer Reihe von Optionen, wenn es zum Beispiel „Doom Trainer +15“. Darüber hinaus arbeiten moderne Busse mit RAM des Spiels, nicht die ausführbare Datei, wie Änderungen an der ausführbaren Datei durch das Kopierschutzsystem ist kompliziert.

Methoden:

So erstellen Sie einen Trainer Speicher Dämpfer verwendet, Debugger und Disassembler. Suchwerte in dem Speicher, die mit den gewünschten Spieleinstellungen übereinstimmt - Der einfachste Weg, einen Trainer zu erstellen. Dann ändern Sie es und suchen Sie in der Ergebnisliste wieder. Nach mehreren Iterationen wahrscheinlich bleiben eine kleine Liste von Adressen sind, ändern sich die Werte, auf die wir versuchen können. Es gibt eine Vielzahl von Tools wie: ArtMoney, Cheat'o'Matic - automatisiert den Prozess des Findens und Ändern von Werten.

In einigen Fällen ändert sich der gewünschte Wert des Spiels ständig seine Position im Speicher. In diesem Fall können Sie versuchen, einen Zeiger zu finden, um es leicht versetzt ist möglich, wenn der Spielwert in einer Datenstruktur ist. Wenn der Zeiger die Position im Speicher ändert, können Sie einen Zeiger auf diesen Zeiger suchen usw. Sie können auch einen Haltepunkt auf der Bezugnahme auf den Wert des Spiels setzen und den Code analysieren, die sie liest oder modifiziert.

Um es zusammenzufassen - so was ist ein, DMA? DMA (Dynamic Memory Allocation) - es ist eine dynamische Speicherzuweisung. Einfach gesagt, verwenden Sie die DMA des Spiels, im Gegensatz zu den nicht-DMA-Spielen, sie Werte in den Speicheradressen gespeichert, die nach jedem Start des Spiels ändern. Alle Spiele unter DOS - verwenden DMA nicht, während der Großteil des Spiels unter Win32 es verwendet wird.


Praxis:

In diesem Artikel werde ich PRINZIP Schreib Trainer für DMA und nicht-DMA-Spiele untersuchen. In runet sehr wenig Informationen zu diesem Thema vorhandene Codebeispiele, Schreiben Trainer haben oft nicht in der Praxis getestet und daher einfach Anfänger verwirren kann. Alles, was wir eine Art und Weise Delphi-Programmiersprache und Debugger TSearch benötigen.
  1. DMA wird nicht spielen:

Führen Sie TSearch. Durch Drücken der Open Process, vyberaem aus der Liste sind wir in den Prozess interessiert. die Liste der Suche nach Drop-out und dann bestimmen die Adresse des Interesses Angelegenheit weiter. Vice City - Als Beispiel werde ich das Spiel GTA betrachten. Interesse prametr - Zeit.

Wie Sie sehen können, hat der Code auf ein Minimum, ich nicht die Kontrollen über die Existenz des Programmfensters verwenden. Da der Punkt, um die Anwendung zu minimieren implementierende nicht viel praktischer sehen Joyner polzovatsyalyubym und die Spieldatei und Trainer zusammenkleben.

 var
 Form1: TForm1;
 Fenstername: Integer;
 ProcessId: Integer;
 ThreadId: Integer;
 HandleWindow: Integer;
 schreiben: Kardinal;

 buf: dword;
 const 
 Window = 'GTA: Vice City'; 
 Adresse = $ 0097F266; 
 NumberOfBytes = 4; 

 Implementierung

 {$ R * .dfm}

 Verfahren s1ow_mode; 
 beginnen
 Fenstername: = Findwindow (NIL, Window); 
 ThreadId: = GetWindowThreadProcessId (Window, @ ProcessId);
 HandleWindow: = Open (PROCESS_ALL_ACCESS, False ProcessId);
 buf: = $ 3E90;
 Write (HandleWindow, PTR (Adresse), @buf, 4, schreiben);
 Ende;

 Verfahren nos1_mode; 
 beginnen
 Fenstername: = Findwindow (NIL, Window); 
 ThreadId: = GetWindowThreadProcessId (Window, @ ProcessId);
 HandleWindow: = Open (PROCESS_ALL_ACCESS, False ProcessId);
 buf: = $ 3F80;
 Write (HandleWindow, PTR (Adresse), @buf, 4, schreiben);
 Ende;

 Verfahren TForm1.Timer1Timer (Sender: TObject);
 beginnen
 if (GetAsyncKeyState (VK_LBUTTON) <> 0), dann 
 beginnen
 s1ow_mode;
 Ende;
 if (GetAsyncKeyState (VK_RBUTTON) <> 0), dann
 beginnen
 nos1_mode;
 Ende;
 Ende; 


Schutz:
Wenn das Spiel eine offizielle Liste von Datensatz hat oder ein Netzwerk-Spiel ist nicht alle Berechnungen sind auf der Server-Seite, die Existenz des Trainers das Spiel ruinieren. In diesem Fall ist es notwendig, ein System zum Schutz vor dem Trainer zu übernehmen, da das Kopierschutzsystem nicht mit dieser Aufgabe bewältigen. Für dieses Spiel die wichtigsten Parameter sind für eine kurze Zeit vor der Verwendung oder erstellen Sie eine verschlüsselte Kopie des Originals von dem der Parameter verglichen wird kontinuierlich verschlüsselt und entschlüsselt. Zur Umgehung solcher Verteidigung ohne Demontage des Programms nicht tun kann.