Step 6

Pointers

 

In diesem Step, werden wir unseren ersten "Pointer" suchen :-)
Pointer sind nötig, um einen gefunden Wert immer wieder zu finden wenn er sich ändert,
was bei den meisten Spielen der Fall ist.
Wir haben einen Wert von "100", der sich ändern sobald wir auf "Change value" klicken.
Klicken wir auf "Change pointer" wir die Speicheradresse geändert und unser gefundener Wert unbrauchbar...
... es sei denn... wir haben den richtigen "Pointer" gefunden :-)

Step06_01

 

 

Los geht's... suchen wir erst einmal unsere aktuelle Speicheradresse von unserem Wert.

Step06_02

 

 

Wie immer reicht eine Suche nicht, darum ändern wir den Wert...

Step06_03

 

 

... und suchen noch einmal... und finden die richtige Adresse auch.

Step06_04

 

 

Mit Doppelklick wieder nach unten klicken

Step06_05

 

 

Rechtsklick auf die Adresse... diesmal aber "Find out what accesses this address" wählen.
Dies bewirkt, dass wir diesmal nicht herausfinden wollen, was in diese Adresse schreibt, sondern was aus dieser Adresse liest.

Step06_06

 

 

Die Messagebox wird wieder mit "Yes" bestätigt

Step06_07

 

 

Ein leeres Fenster öffnet sich wieder.

Step06_08

 

 

Verändern wir zunächst mal unseren Wert.

Step06_09

 

 

Es erscheinen 4 Einträge.
Da wir nicht wissen welcher Eintrag der richtige ist, müssen wir diese erstmal checken.

Step06_10

 

 

Doppelklicken wir den ersten Eintrag.
Hier sollte man schon über einige ASM Kenntnisse verfügen, damit man auch weiß, was hier genau passiert.

Bei der Adresse "10002ADCD" wird der Inhalt vom Register "RAX" ins Register "EAX" kopiert
Würde hier z.B. "10002ADCD - mov eax, [rax+5]" stehen, wäre "5" unser "Offset".
Das aber auch nur um zu erklären wo wir die Offsets finden :-)

Im unteren Teil sehen wir die Werte die jedes Register beinhaltet.
Das Register "RAX" beinhaltet hier den Wert bzw die Adresse "00000042"
Dieser Wert wird uns in der Mitte auch angezeigt... mehr dazu aber gleich.
Sehen wir uns erst noch die anderen Einträge an :-)

Step06_10_01

 

 

Beim zweiten Eintrag wird der Inhalt von "EAX" nach "RDX" kopiert

Step06_10_02

 

 

Beim dritten Eintrag wird auch "EAX" nach "RDX" kopiert

Step06_11

 

 

Auch im vierten Eintrag wird "EAX" nach "RDX" kopiert.

Ich nehme den vierten Eintrag... es sollte aber auch mit dem zweitem und dritten Eintrag funktionieren.

In der Mitte machen wir einen Rechtsklick auf die Adresse "010F4580" und klicken auf
"Copy easy guess to clipboard" um diese Adresse in unsere Zwischenablage zu kopieren.

Step06_12

 

 

Diese Adresse fügen wir in unserer Suche ein und aktivieren das Häkchen "HEX"
Wir finden eine grüne Adresse... dies ist ein "Pointer"
Den gefundenen Pointer doppelklicken wir auch gleich wieder, damit wir ihn in unserem Chatfenster haben.

Step06_13

 

 

Jetzt klicken wir auf "Add Address Manually" um dieses Fenster zu öffnen.

Aktivieren die Checkbox "Pointer" und bei "Address of Pointer" fügen wir unsere gefundene Adresse "1001FD720" ein.
Einen Offset haben wir nicht gehabt, wie wir uns erinnern können... also belassen wir den bei "0"

Step06_14

 

 

Haben wir mit "OK" bestätigt sehen wir nun folgendes:

Wir haben nun eine zweite Adesse hinzugefügt. Unseren eben erstellten "Pointer" erkennen wir an dem "P->" vor der Adresse.
Beide haben den selben Wert... zumindest noch :-)
Unser Pointer wird aber immer auf den richtigen Wert zeigen.

Step06_15

 

 

Das können wir nun auch problemlos testen, indem wir einfach in der "Tutorial.exe" auf den Button "Change pointer" klicken.

Step06_16

 

 

Wie wir sehen, zeigt unser Pointer immer noch auf die richtige Adresse... YIPPIEH :-)

Sollten hier jetzt beide Adressen den falschen Wert anzeigen, hast du wohl etwas falsch gemacht.
Dann musst du nochmal von vorne beginnen.

Step06_17

 

 

Nun ändern wir einfach unseren Wert auf "5000" und aktivieren das Häkchen, damit der Wert eingefroren wird "Freeze"

Step06_18

 

 

Step 6 ist geschafft und ein weiterer wichtiger Schritt wurde gelernt.
Ohne das Wissen wie man "Pointer" findet, ist man bei fast allen Spielen aufgeschmissen.
Weiter zu Step 7 :-)

Step06_19

 

Zurück zur Übersicht