Willkommen im letzten Step der "Tutorial.exe".
Hier lernen wir, wie wir "Multilevel Pointer" finden können.
Das sind Pointer, die auf mehrere Pointer
zeigen.
Ein "Level-4 Pointer" ist also ein "Pointer, der auf einen Pointer zeigt, der wieder auf einen Pointer zeigt,
der auf einen Pointer zeigt, der auf den Pointer zeigt der auf unsere Zieladresse
zeigt".
Ziel ist es in diesem Step, dass wir den "Level-4 Pointer" finden und unseren Wert auf "5000" setzen und einfrieren.

Als erstes wie gehabt, ganz normal nach dem aktuellen Wert suchen... in meinem Fall die "1803"

Mit doppelklick wieder nach unten kopieren.
Rechtsklick und "Find out what writes to this address" wählen.

Ein leeres Debuggerfenster öffnet sich wieder

Klicken wir in der "Tutorial.exe" nun auf "Change value" ändert sich unser Wert und im Debuggerfenster erscheint eine Codezeile.
Auf diese machen wir einen Doppelklick.

In der Rot markierten Zeile finden wir die Instruktion die ausgeführt wird.
Der inhalt von "EAX" wird dementsprechend in das Register "RSI+18" kopiert.
Die "18" ist unser "Offset", welche wir nun merken bzw aufschreiben sollten.
Der inhalt von "RSI" finden wir wie gehabt unten und enthält die Adresse "02CD2BE0",
Diese können wir einfach kopieren indem wir in der Mitte auf der Adresse
einen Rechtsklick machen.

Klicken auf "New Scan" und aktivieren das Kästchen "Hex" und suchen nach der eben gefundenen Adresse.
Wir finden die Adresse "011BBAF0" welche unsere Adresse beinhaltet.
Wir doppelklicken diese, damit sie unten gespeichert wird.

Nun erfolgt ein wichtiger Schritt. Wir müssen diesen Eintrag in einen Pointer umwandeln.
Dazu einfach einen Doppelklick auf die Adresse "011BBAF0"
machen, damit sich dieses Fenster öffnet (STRG+ALT+ENTER).
Wir kopieren gleich die Adresse "011BBAF0" und aktivieren die Checkbox "Pointer"

Die kopierte Adresse "011BBAF0" fügen wir hier gleich ganz unten wieder ein.
Wir erinnern uns aber, dass wir einen "Offset von 18" hatten... diesen müssen wir hier auch angeben.
Wir bestätigen die Eingaben mit "OK"

Haben wir alles richtig gemacht, sollte es nun folgendermaßen aussehen.
Bei Adresse sollte nun ein "P->" davorstehen... das bedeutet, dass diese Adresse ein Pointer ist.
Genau wie der Wert, der sollte nun genau der gleiche sein wie oben.
Ist das alles so richtig, ist der erste Schritt erfolgreich abgeschlossen.
Die nächsten Schritte werden nämlich genau so
wiederholt, bis wir den Base Pointer gefunden haben.

Wir machen also wieder einen Rechtsklick auf die Zeile mit unserem Pointer und wählen diesmal
"Find out what accesses this address"

Da es sich hier jetzt um einen Pointer handelt, müssen wir angeben ob wissen wollen was auf den Pointer zugreift
oder was auf die Adresse auf die der Pointer zeigt zugreift.
Wir wollen natürlich wissen was auf den Pointer zugreift und wählen die erste Option.

Wie gesagt... nun wiederholen sich im großen und ganzen die Schritte...
In der "Tutorial.exe" klicken wir nun auf "Change value"

Im Debugger erscheinen 2 Instruktionen... wir doppelklicken den ersten Eintrag

Hier wird der Inhalt von "RSI nach RAX" kopiert... diesmal "ohne Offset"!
Wir machen wieder einen Rechtsklick auf die Adresse "011BBAF0" in der Mitte um diese zu kopieren

Starten wieder eine neue Suche und achten darauf, dass die Checkbox "HEX" aktiviert ist.
Fügen die eben kopierte Adresse "011BBAF0" ein und klicken auf "First Scan".
Wir finden die Adresse "02CA2E78" die wir gleich wieder nach unten doppelklicken.

Ganz schlaue kopieren nun die Adresse "02CA2E78" und erweitern den vorhandenen Pointer in der Mitte.
Ich werde hier aber zu übungszwecken den Pointer neu erstellen :-)
Wir machen also wieder einen Doppelklick auf die Adresse "02CA2E78" oder drücken "STRG+ALT+ENTER"
Kopieren gleich die Adresse "02CA2E78" und aktivieren die Checkbox "Pointer"

Fügen ganz unten gleich wieder die kopierte Adresse ein.
Einen Offset hatten wir diesmal nicht, daher bleibt dieser hier auf 0 stehen.
Nun müssen wir den Pointer von der ersten Suche noch angeben.
Also auf "Add pointer" klicken.
Der Offset der ersten Suche war wie wir uns erinnern 18... daher schreiben wir 18 in das Feld

Nun sollte es folgendermaßen aussehen.
Auch in der dritten Zeile sollte nun
bei der Adresse ein "P->" erschienen sein und der Wert sollte genau der selbe sein wie die anderen.
Wir wiederholen das Spiel ein weiteres mal. Machen einen Rechtsklick auf die dritte Zeile und wählen wieder
"Find out what accesses this address"

Bestätigen wieder, dass wir wissen wollen was auf den Pointer zugreift.
(Erste Option)

Klicken dann in der "Tutorial.exe" wieder auf "Change value"

Nun erscheinen wieder zwei Instruktionen.
Wir doppelklicken die erste

Hier wird der Inhalt von "RSI+18" nach "RAX" kopiert.
Hier gibt es wieder einen Offset von 18... gleich aufschreiben.
Die Adresse "02CA2E60" die in der Mitte steht kopieren wir mit einem Rechtsklick.

Starten eine neue Suche nach der eben kopierten Adresse und achten wieder darauf, dass "HEX" aktiviert ist.
Die gefundene Adresse wird wieder mit einem Doppelklick nach unten kopiert und wir ändern wieder die Adresse.

Die Adresse gleich wieder kopieren und den haken bei Pointer setzen

Ganz unten wieder einfügen und an den "Offset von 18" denken.
Zweimal "Add pointer" anklicken, da dies ja unser dritter Pointer ist.
Die Offsets eintragen und mit "OK" bestätigen.

Auch hier sollte nun das "P->" angezeigt werden und alle Werte gleich sein!
Wir wiederholen das Spiel nun noch einmal :-)
Wieder Rechtsklick auf den Pointer und "Find out what accesses this pointer" wählen.

Wir wählen wieder die erste Option...

...und klicken ein weiteres Mal auf "Change value" in der "Tutorial.exe"

Doppelklicken den ersten Eintrag... merken uns den "Offset von 10"
und kopieren wieder die Adresse "0115C990" mit einem Rechtsklick.

Nach dieser suchen wir wieder wie gehabt und finden diesmal eine "Grüne Adresse".
Diese Adresse ist unser "Base Pointer".
Doppelklicken sie wieder nach unten und ändern die Adresse

Kopieren die Adresse und aktivieren die Checkbox "Pointer"...

...und fügen sie gleich wieder ganz unten ein.
Klicken 3x auf "Add pointer" und fügen unsere Offsets ein.

Wieder sollte alles den selben Wert haben.
Da wir nun den "Base Pointer" gefunden haben sollte die letzten Adresse immer auf die richtige Adresse mit unserem Wert zeigen.

Um das zu testen, klicken wir in der "Tutorial.exe" auf den Button "Change pointer"

Haben wir keine Fehler gemacht, sollte der "Level-4 Pointer" immer noch auf die richtige Adresse zeigen.
Ist das so... dann haben wir es geschafft :-)

Das Ziel ist es nun, den Wert auf "5000" zu setzen und einzufrieren.
Wir ändern also dementsprechend unseren Wert auf "5000" und frieren ihn mit der Checkbox ein

Der "Next" Button wird aktiviert und Step 8 wurde erfolgreich absolviert.

Gefällt dir diese Seite?
Abonniere mich, Like mich, Teile mich :-)