Gamehacking – Basepointer finden

Im letzten Teil bin ich darauf eingegangen wie normale Speicheradressen gefunden werden, in dem z.B. der Wert des Goldes gespeichert wird. Leider wird diese Speicheradresse bei jedem Neustart des Programmes geändert. Jedoch gibt es einen sogenannten Base-Pointer, dieser bleibt immer gleich und zeigt auf die aktuelle Speicheradresse die das Gold enthält. Wie dieser gefunden wird, versuche ich verständlich und ausführlich zu erklären.

1. Vorbereitung – Welche Programme werden benötigt?

Zum einen natürlich CheatEngine um die Speicheradresse zu finden und so später zum Basepointer zu gelangen. Zum anderen natürlich das Ziel-Programm. Diesesmal wird es AssaultCube sein, da es ein kleines Ego-Shooter Spiel ist. Ein Munitionshack kommt da ganz gelegen. Das Spiel hat gerade mal etwa 40MB und kann auf der Offiziellen Seite heruntergeladen werden. Zusätzlich brauchen wir einen einfachen Texteditor, oder ein Stück Papier.

2. Lasst die Suche beginnen!

Zuerst müssen wir natürlich CheatEngine und AssaultCube starten. In AssaultCube stellen wir zuvor die Vollbild Funktion in den Optionen aus, da so dass wechseln zwischen den beiden Programmen einfacher ist.

Unbenannt

Nun öffnen wir CheatEngine und öffnen die ac_client.exe

Unbenannt

Nun Scannen wir nach dem Wert den wir suchen. In dem Fall 20, denn das ist der Munitionsbestand.

Unbenannt

Da wir jetzt noch viel zu viele Adressen haben, schießen wir einmal. Nun sollten wir 19 Schuss im Magazin haben. Wir suchen nun also nach dem Wert 19 und klicken auf „Next Scan“.

Nun sollten wir schon weniger Ergebnisse haben. Wir wiederholen das ganze nun solange bis wir nur noch ein oder zwei Werte haben. D.h. nochmal schießen und nach 18 suchen. Natürlich auch wieder auf „Next Scan“ klicken.

In diesem Fall haben wir zwei Werte. Wir klicken diese beiden mit einem Doppelklick an. Nun sollten Sie im unteren Teil von CheatEngine vorhanden sein. Ändern Sie nun den Wert von einen der beiden Adressen. Das geht in dem Sie in die Spalte „Value“ bei der geeigneten Adresse Doppelklicken.

Sollte sich der Wert im Spiel nicht geändert haben, ist es die andere Adresse. Somit können Sie die „falsche“ Adresse zur besseren Übersicht entfernen.

Klicken Sie nun mit einem Rechtsklick auf die Adresse und wählen Sie „Find out what accesses this adress“.

Unbenannt

Bestätigen Sie die Meldung ob CheatEngine den Debugger starten soll mit „Yes“.

Nun sollte sich ein neues Fenster geöffnet haben. Lassen Sie dieses geöffnet und schießen Sie im Spiel einmal. Es sollten nun zwei neue Wert hinzugekommen sein.

Unbenannt

Die beiden Markierten öffnen Sie nun mit einem Doppelklick. In den zwei neuen Fenster sehen Sie jetzt ziemlich viele Zahlen. Jedoch sind für uns nur wenige von Interesse.

Unbenannt

Bei dem rot Markierten Text sehen Sie kein Offset. Damit meine ich keine Zahl. Sie werden in einem späteren Bild sehen was ich meine. Wichtig in diesem Fall ist nun die „Zahl“ die ich rot eingekreist habe. In diesem Fall ist Sie „00A1A308“. Dieser Wert ist in beiden Fenstern gleich. Im späteren Verlauf werden Sie merken das dass nicht die Regel ist.

Jedenfalls öffnen Sie sich nun einen Editor oder nehmen ein Papier zur Hand und schreiben „Offset: 0“ und „Adresse: „00A1A308“, da wir dass für den späteren Verlauf noch brauchen.

Nun müssen Sie nach der eben genannten Adresse in CheatEngine suchen. Bedenken Sie aber das Sie vor dem Suchfeld den Haken bei „Hex“ setzen müssen. Außerdem klicken Sie diesesmal auf „New Scan“ und danach auf „First Scan“.

Unbenannt

Klicken Sie nun auf „Add Adress Manually“. Im neu geöffneten Fenster wählen Sie „Pointer“ an.

In der aller untersten Texteingabe schreiben Sie die Adresse von dem eben gefundenem Wert. In das Eingabefeld darüber das Offset, in dem Fall 0.

Unbenannt

Oben rechts sehen Sie eine Vorschau. Dieser Wert muss mit der Anzahl der Munition im Spiel übereinstimmen. Dann haben Sie alles richtig gemacht. Das ganze sollte nun so aussehen:

Unbenannt

Sie klicken nun auf den untersten Eintrag und wählen dort wieder „Find out what accesses this adress“. Bei der nächsten Abfrage wählen Sie „Find out what accesses this pointer“.

Begeben Sie sich dann wieder zum Spiel und schießen Sie einmal. Sie sehen das nun wieder zwei neue Einträge hinzugekommen sind.

Unbenannt

Sie öffnen nun wieder beide Fenster durch ein Doppelklick.

Unbenannt

Das was in dem Bild blau umrahmt ist, ist das Offset. Dieses mal haben wir zwei verschiedene Adressen. In diesem Beispiel „0094A308“ und „009413F8“. Nun speichern wir in unseren Texteditor wieder das Offset ab („+14“) und die beiden Pointer-Adressen. Denn nun müssen wir ausprobieren.

Ich nehme nun einfach die erste Pointer-Adresse und suche diese wieder in Hexadezimaler Form in Cheat Engine. Ich bekomme ein Ergebnis zurück. Dieses Ergebnis wird nun einfach auf Übereinstimmung getestet.

Deshalb klicken wir einfach auf „add Adress Manually“, und klicken einmal auf „Add Offset“. Im untersten Feld fügen wir nun wieder die Adresse die wir gerade gefunden haben ein. In dem Feld darüber das Offset das wir gerade gefunden haben („+14“), im letzten Feld fügen wir das Offset von der ersten Adresse ein („0“). Leider sehen wir nun in der Vorschau das es ungültig ist und nicht auf eine Adresse verweist.

Unbenannt

Wir haben also nun festgestellt dass uns die erste Adresse zu keinem Ergebnis führt. Deshalb verwenden wir nun die zweite. Nun ist es in meinem Fall so, dass ich gleich 7 Adressen geliefert bekomme. Nun heißt es einfach nach der „Brute-Force“-Methode vorgehen. D.h. ich probiere einfach jede Adresse die ich bekommen habe aus, und schaue ob die Vorschau mit der Munition im Spiel übereinstimmt.

Unbenannt

In diesem Fall haben sogar alle Adressen zum richtigen Ergebnis geführt. Das Problem ist jetzt, dass nur eine der Adressen uns auch zum Basepointer führt. Also heißt es weiter ausprobieren. Wir klicken nun also wieder einmal mit einem Rechtsklick auf unseren neuen Eintrag und wählen „Find out what accesses this pointer“. Es öffnet sich wie gewohnt das neue Fenster und wir schießen wieder im Spiel einmal.

Dieses mal ist nur ein neuer Eintrag hinzugekommen. Dieser enthält die Adresse „0094A1B8“ und das Offset „+384“.

Unbenannt

Also wieder das gewohnte Spiel, wir suchen in Hexadezimaler Form nach dem gerade gefundenem Wert „0094A1B8“.

… und siehe da, wir haben es geschafft. Wir haben die Basepointer gefunden. Sollte dass bei Ihnen nicht der Fall sein, müssen Sie andere Adressen ausprobieren, und dass solange bis Sie die Basepointer gefunden haben.

Unbenannt

In CheatEngine werden Basepointer Gott sei Dank in grün gekennzeichnet.

Trotzdem klicken wir nun auf „Add Address Manually“ und fügen einen der Basepointer zum Test hinzu.

Unbenannt

3. Der Praxis Test

Klicken Sie nun auf die Speicherdiskette in CheatEngine um die eingetragenen Adressen später wieder zur öffnen.

Unbenannt

Schließen Sie nun AssaultCube und CheatEngine komplett.

Starten Sie jetzt AssaultCube, öffnen Sie dann Ihre eben gespeicherte CheatEngine Datei. In CheatEngine müssen Sie nun wieder den „ac_client.exe“ Prozess auswählen…

…und siehe da, trotz des Neustart hat sich der Base-Pointer nicht verändert.

Unbenannt

Ein Gedanke zu „Gamehacking – Basepointer finden

  1. zafirab1cdti

    Tut mir leid aber ich glaube dein tutorial ist aktuell n icht mehr nutztbar, den beim zweiten schritt also da wo man wieder das mit find out adress macht, habe ich nic ht zwei verschiedenen adressen sondern beides die gleichen, und wenn ich die eingebe dann kommen merhere aber keines passt.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.