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

Schreibtrainer für Spiele (Spieletrainer)

Einführung:

Wir alle, als wir vor langer Zeit oder in letzter Zeit Spiele - Tischspiele, Sport und mit der Einführung von Computertechnologie in unser Leben und in Computerspiele spielten. Aufgrund seines Alters, seiner Gewohnheiten oder einfach nur nach einem anstrengenden Arbeitstag entspannen und aufmuntern.

Es scheint, dass das Spiel unbegrenzte Möglichkeiten zur Selbstverwirklichung bietet: als Reiter, Pilot, Killer oder sogar Gott. Aber ein Mensch ist so arrangiert - er erreicht eine bestimmte Höhe, er will immer noch etwas und findet daher ein neues Ziel oder neue Möglichkeiten.

Es ist klar, dass Entwickler beim Entwickeln von Spielen in erster Linie, wenn nicht nach eigenem Geschmack, vom Geschmack des Projektmanagers, manchmal von der Statistik, geleitet werden. Aber schließlich wollen Sie manchmal die Auswirkungen der Moderation von der Matrix in das Spiel Indiana Jones und nicht der agilste Held der Spielebranche - Hitman Hitman, gelernt, um die Wände herumlaufen. Zu diesem Zweck werden die Trainer erstellt.

Theorie:

Trainer (Englischer Trainer) - ein Programm, das das Verhalten des Spiels ändern soll und normalerweise direkt mit dem RAM des Computers arbeitet.

In den 1980er und 1990er Jahren wurden Trainer von Hacker in den Spielcode eingebaut. Beim Start wird der Trainer mit der Dialogbox "Möchtest du Cheats benutzen?" Zuerst gestartet, der Spielcode wurde fortgesetzt. Im Namen des Trainers verwendet Zeichen der Addition (+), eine für jede Option des Busses. Zum Beispiel "The Hacker Group presents: Doom +++" - drei Optionen, zum Beispiel Unsterblichkeit, unendliche Munition und Teleportation.

Moderne Trainer, die in der Regel als eigenes Programm laufen, werden vor dem Spiel verwendet. In ihren Namen wird ein Zusatzzeichen mit der Anzahl der Optionen verwendet, die zum Beispiel "Doom Trainer +15" sind. Darüber hinaus arbeiten moderne Trainer mit dem RAM des Spiels und nicht mit der ausführbaren Datei, da Änderungen an der ausführbaren Datei durch Kopierschutzsysteme kompliziert werden.

Methoden:

Um Trainer zu erstellen, werden Speicher-Dämpfer, Debugger und Disassembler verwendet. Der einfachste Weg, einen Coach zu erstellen, besteht darin, nach einem Wert im Speicher zu suchen, der dem gewünschten Spielparameter entspricht. Dann ändern Sie es und suchen Sie in der resultierenden Liste erneut. Nach einigen Iterationen wird es höchstwahrscheinlich eine kleine Liste von Adressen geben, deren Werte Sie ändern können. Es gibt viele Dienstprogramme wie: ArtMoney, Cheat'o'Matic - automatisiert den Prozess der Suche und Änderung von Werten.

In manchen Fällen ändert der gewünschte Spielwert ständig seine Position im Speicher. In diesem Fall können Sie versuchen, mit einem kleinen Offset einen Zeiger darauf zu finden, wenn der Spielwert in einer Datenstruktur liegt. Wenn der Zeiger auch die Position im Speicher ändert, können Sie nach einem Zeiger auf diesen Zeiger usw. suchen. Sie können Breakpoints auch bei Anrufen zum Spielwert festlegen und den Code, der sie liest oder analysiert, analysieren.

Fassen wir zusammen - was ist es, DMA? DMA (Dynamic Memory Allocation) ist eine dynamische Speicherzuordnung. Einfach ausgedrückt speichert DMA-Spiele im Gegensatz zu Nicht-DMA-Spielen die Werte, die sie für Speicheradressen verwenden, die sich nach jedem Spiel ändern. Alle Spiele unter DOS - benutzen Sie nicht DMA, während die meisten Spiele unter Win32 es benutzen.


Praxis:

In diesem Artikel werde ich die Prinzipien des Schreibens von Trainern für DMA- und Nicht-DMA-Spiele betrachten. In Runet sehr wenig Informationen zu diesem Thema, die bereits vorhandenen Codebeispiele, schreiben Trainer oft nicht in der Praxis getestet und können somit Neuankömmlinge einfach verwirren. Alles, was wir brauchen, ist die Delphi-Programmiersprache und der TSearch-Debugger.
  1. Kein DMA-Spiel:

Starten Sie TSearch. Klicken Sie auf Prozess öffnen, wählen Sie den Prozess aus, der uns interessiert. Als nächstes filtern wir mit der Suche, die wir suchen, heraus und bestimmen dann die Adresse des interessierenden Werts. Als Beispiel werde ich das Spiel GTA - Vice City betrachten. Die interessierte Zeit ist Zeit.

Wie Sie sehen, ist der Code minimal, ich habe die Prüfungen nicht auf das Vorhandensein des Programmfensters angewendet. Da der Sinn des Faltentfaltungsprozesses die Anwendung nicht sieht, wird es viel praktischer sein, jeden Joeyer zu verwenden und die Spieldatei und den Trainer in einem zu kleben.

 var
 Form1: TForm1;
 WindowName: Ganzzahl;
 ProcessId: Ganzzahl;
 ThreadId: integer;
 HandleWindow: Integer;
 schreiben: Kardinal;

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

 Umsetzung

 {$ R * .dfm}

 Prozedur s1ow_mode; 
 anfangen
 WindowName: = FindWindow (nil, WindowTitle); 
 ThreadId: = GetWindowThreadProcessId (WindowName, @ ProcessId);
 HandleWindow: = OpenProcess (PROCESS_ALL_ACCESS, False, ProcessId);
 buf: = $ 3E90;
 WriteProcessMemory (HandleWindow, ptr (Adresse), @buf, 4, schreiben);
 Ende;

 Prozedur nos1_mode; 
 anfangen
 WindowName: = FindWindow (nil, WindowTitle); 
 ThreadId: = GetWindowThreadProcessId (WindowName, @ ProcessId);
 HandleWindow: = OpenProcess (PROCESS_ALL_ACCESS, False, ProcessId);
 buf: = $ 3F80;
 WriteProcessMemory (HandleWindow, ptr (Adresse), @buf, 4, schreiben);
 Ende;

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


Schutz:
Wenn das Spiel eine offizielle Tabelle der Datensätze hat oder das Spiel ein Netzwerk ist und nicht alle Berechnungen auf der Serverseite sind, ruiniert die Existenz von Trainern das Spiel. In diesem Fall müssen Sie das System mit einem Schutz vor Bussen betten, da Kopierschutzsysteme diese Aufgabe nicht bewältigen können. Dazu werden die wichtigsten Spielparameter kurz vor der Verwendung verschlüsselt und entschlüsselt oder es wird eine verschlüsselte Kopie erstellt, mit der der Originalparameter ständig verglichen wird. Um solche Schutzmaßnahmen zu umgehen, können Sie das Programm nicht auseinandernehmen.