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

Schreibtrainer für Spiele (Spieltrainer)

Einleitung:

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

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

Es ist klar, dass Entwickler bei der Entwicklung von Spielen in erster Linie, wenn auch nicht nach ihrem eigenen Geschmack, vom Geschmack des Projektmanagers, manchmal von Statistiken, geleitet werden. Aber manchmal wollen Sie, dass die Effekte der Moderation aus der Matrix ins Spiel kommen, Indiana Jones, und nicht der agilste Held der Spieleindustrie - Hitman Hitman, hat gelernt, an den Wänden herumzurennen. Zu diesem Zweck werden die Trainer erstellt.

Theorie:

Trainer (Englisch Trainer) - ein Programm, das entwickelt wurde, um das Verhalten des Spiels zu ändern, normalerweise direkt mit dem RAM des Computers arbeiten.

In den 1980er und 1990er Jahren wurden Coaches normalerweise von Hackern in den Spielcode eingebaut. Zu Beginn wurde der Trainer mit der Dialogbox "Möchtest du Cheats verwenden?" Zuerst gestartet, der Spielecode wurde fortgesetzt. Im Namen des Trainers verwendet Zeichen der Ergänzung (+), eine für jede Option des Trainers. Zum Beispiel "The Hacker Group präsentiert: Doom +++" - drei Optionen, zum Beispiel, Unsterblichkeit, unendliche Munition und Teleportation.

Moderne Trainer, die normalerweise als separates Programm vor dem Spiel laufen, verwenden in ihren Namen ein Zusatzzeichen mit der Anzahl der Optionen, zum Beispiel "Doom Trainer +15". Darüber hinaus arbeiten moderne Trainer mit dem Arbeitsspeicher des Spiels und nicht mit der ausführbaren Datei, da Änderungen an der ausführbaren Datei durch Kopierschutzsysteme erschwert werden.

Methoden:

Zum Erstellen von Trainern werden Memory Damper, Debugger und Disassembler verwendet. Der einfachste Weg, einen Coach zu erstellen, ist die Suche nach einem Wert im Speicher, der dem gewünschten Spielparameter entspricht. Dann ändern Sie es und suchen Sie erneut in der Ergebnisliste. Nach ein paar Iterationen wird höchstwahrscheinlich eine kleine Liste von Adressen übrig bleiben, deren Werte Sie ändern können. Es gibt viele Hilfsprogramme wie: ArtMoney, Cheat'o'Matic - den Prozess der Suche automatisieren und Werte ändern.

In manchen Fällen ändert der gewünschte Spielwert ständig seine Position im Speicher. In diesem Fall können Sie versuchen, einen Zeiger darauf zu finden, möglicherweise mit einem kleinen Offset, wenn sich der Spielwert in irgendeiner Datenstruktur befindet. Wenn der Zeiger auch die Position im Speicher ändert, können Sie nach einem Zeiger auf diesen Zeiger usw. suchen. Sie können bei Aufrufen des Spielwerts auch Haltepunkte setzen und den Code analysieren, der sie liest oder ändert.

Lassen Sie uns zusammenfassen - also was ist es, DMA? DMA (Dynamic Memory Allocation) ist eine dynamische Speicherzuweisung. Kurz gesagt, DMA-Spiele speichern im Gegensatz zu Nicht-DMA-Spielen die Werte, die sie für Speicheradressen verwenden, die sich nach jedem Spielstart ändern. Alle Spiele unter DOS - verwenden nicht DMA, während die meisten Spiele unter Win32 es verwenden.


Praxis:

In diesem Artikel werde ich die Prinzipien des Schreibens von Trainern für DMA- und Nicht-DMA-Spiele betrachten. In runet werden sehr wenig Informationen zu diesem Thema, die bereits vorhandenen Codebeispiele, Schreibcoaches oft in der Praxis nicht getestet und können daher 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, der uns interessiert. Als nächstes filtern wir mit der Suche, die wir suchen, und bestimmen dann die Adresse des interessierenden Wertes. Als Beispiel betrachte ich das Spiel GTA - Vice City. Die interessierte Zeit ist Zeit.

Wie Sie sehen können, ist der Code minimal, ich habe die Prüfungen nicht für das Vorhandensein des Programmfensters verwendet. Da der Sinn beim Falten-Entfalten der Anwendung nicht ersichtlich ist, wird es viel praktischer sein, jeden Joeyer zu verwenden und die Spieldatei und den Trainer in einen zu kleben.

 var
 Form1: TForm1;
 Fenstername: Ganzzahl;
 Prozess-ID: Ganzzahl;
 ThreadId: Ganzzahl;
 HandleWindow: Ganzzahl;
 schreibe: Kardinal;

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

 Implementierung

 {$ R * .dfm}

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

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

 Prozedur TForm1.Timer1Timer (Absender: TObject);
 beginne
 if (GetAsyncKeyState (VK_LBUTTON) <> 0) dann 
 beginne
 s1ow_mode;
 Ende;
 if (GetAsyncKeyState (VK_RBUTTON) <> 0) dann
 beginne
 nos1_mode;
 Ende;
 Ende; 


Schutz:
Wenn das Spiel eine offizielle Tabelle von Datensätzen hat oder das Spiel 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 dem Schutz von Coaches einbetten, da Kopierschutzsysteme diese Aufgabe nicht bewältigen können. Dazu werden die wichtigsten Spielparameter vor der Verwendung kurz verschlüsselt und entschlüsselt oder es wird eine verschlüsselte Kopie erstellt, mit der der ursprüngliche Parameter ständig verglichen wird. Um solche Schutzmaßnahmen zu umgehen, können Sie nicht ohne Demontage des Programms auskommen.