Pointer Problem

10/30/2009 18:30 Medix#1
Huhu,

und zwar folgendes Problem ich wollte mich etwas mit cheatengine beschäftigen und ein paar Pointer in Diablo 2 finden.


Angenommen ich suche meine Lebenspunkte (1631)


--> First Scan (4bytes , exact value) = 1631
--> ein paar weitere Scans mit veränderten Werten und es bleiben noch 2 Addressen übrig die immer den gleichen Wert haben sobald sich mein Leben verändert im Spiel.

--> ich versuche den Pointer zu ermitteln, daher klicken ich eine Addresse an und "Find out what writes to this address".
--> ich geh wieder ins Spiel und veränder mein Leben
--> Es wird im neuen Fenster etwas in die Zeile geschrieben, ich doppel klick dies
--> dann gibts da ne rot geschriebene Zeile die ca. so aussieht mov [eax+04].

Darunter steht der wert von EAX , ich starte einen neuen Scan und suche nach dem EAX wert. (Exact value, 4bytes, hex aktiviert). Nun findet er jedoch keine einzige addresse. Somit kann ich auch keinen Pointer ermitteln.(In den ganzen tutorials steht ,dass nun zwischen einer und mehreren addressen erscheinen sollten) Wo habe ich denn einen Fehler gemacht :(?
10/30/2009 19:31 HardCore.1337#2
Ich habs damit gelernt ;)
10/30/2009 19:43 Medix#3
Danke ;)
aber das bringt mich mit meinem Problem leider nicht weiter er findet eben wenn ich mit hex scanne dann keine neue addresse so wie bei dem video im tutorial.
11/02/2009 17:08 Medix#4
*hochschieb* niemand ne Idee?
11/02/2009 19:21 Adroxxx#5
Quote:
Originally Posted by Medix View Post
Huhu,

und zwar folgendes Problem ich wollte mich etwas mit cheatengine beschäftigen und ein paar Pointer in Diablo 2 finden.


Angenommen ich suche meine Lebenspunkte (1631)


--> First Scan (4bytes , exact value) = 1631
--> ein paar weitere Scans mit veränderten Werten und es bleiben noch 2 Addressen übrig die immer den gleichen Wert haben sobald sich mein Leben verändert im Spiel.

--> ich versuche den Pointer zu ermitteln, daher klicken ich eine Addresse an und "Find out what writes to this address".
--> ich geh wieder ins Spiel und veränder mein Leben
--> Es wird im neuen Fenster etwas in die Zeile geschrieben, ich doppel klick dies
--> dann gibts da ne rot geschriebene Zeile die ca. so aussieht mov [eax+04].

Darunter steht der wert von EAX , ich starte einen neuen Scan und suche nach dem EAX wert. (Exact value, 4bytes, hex aktiviert). Nun findet er jedoch keine einzige addresse. Somit kann ich auch keinen Pointer ermitteln.(In den ganzen tutorials steht ,dass nun zwischen einer und mehreren addressen erscheinen sollten) Wo habe ich denn einen Fehler gemacht :(?
Du hast alles richtig gemacht. Das ist einfach so, dass es nicht bei jedem Spiel gleich ist. Oft kommt man mit CE nicht weiter.
Ich würde dir empfehlen mit Olly an die sache ran zu gehen.

Du suchst (von mir aus auch in CE) nach deinem Wert. Wenn du die temporäre adresse hast, machst du einen breakpoint drauf. Dann kommst du in die Funktion wo diese geschrieben wird.

push ebp
mov eax, [exc+4]
mov , [...]
[...]

Dann machst du auf push ebp einen bp. Dann schaust du im Stack Window und machst auf den return einen bp und dann bist du sogesehen aus der funktion raus und kannst nach hinten verfolgen wo die adresse herkommt. Dann schaust du dir den Code an ob dort irgendwo eax geschrieben wird.
11/20/2009 17:21 Medix#6
Quote:
Originally Posted by Adroxxx View Post
Du hast alles richtig gemacht. Das ist einfach so, dass es nicht bei jedem Spiel gleich ist. Oft kommt man mit CE nicht weiter.
Ich würde dir empfehlen mit Olly an die sache ran zu gehen.

Du suchst (von mir aus auch in CE) nach deinem Wert. Wenn du die temporäre adresse hast, machst du einen breakpoint drauf. Dann kommst du in die Funktion wo diese geschrieben wird.

push ebp
mov eax, [exc+4]
mov , [...]
[...]

Dann machst du auf push ebp einen bp. Dann schaust du im Stack Window und machst auf den return einen bp und dann bist du sogesehen aus der funktion raus und kannst nach hinten verfolgen wo die adresse herkommt. Dann schaust du dir den Code an ob dort irgendwo eax geschrieben wird.
Danke dir ;)

Kannst du mir vllt. auch noch ein halbwegs gutes tutorial empfehlen ,dass sich mit ollydbg und pointern befasst?
11/20/2009 20:58 Adroxxx#7
Hm, schau mal im CE Forum. Da gabs glaub ich mal für PinBall ein Video Tutorial. Das ging mit Olly. Da wurde auch erklärt wie man genau vorgeht usw.
11/20/2009 22:12 wurstbrot123#8
Wenn du die Adresse weisst, kannst du folgendes tun um mit Olly ans Offset zu kommen. Mach einen Rechtsklick im Hex dump --> go to expression --> Adresse --> OK. Dann machst du einen Rechtsklick auf
das erste Byte im Hex dump und klickst auf Memory breakpoint on write.
So jetzt mach was beim Spiel was den Wert an der Addresse verändert und das Spiel wird durch den Breakpoint stoppen. In Olly könntest du dann zum Beispiel folgendes sehen:
mov [eax+50], edx
Dort ist dann die Baseaddresse in eax und das Offset ist 0x50.
11/20/2009 23:04 Medix#9
Quote:
Originally Posted by wurstbrot123 View Post
Wenn du die Adresse weisst, kannst du folgendes tun um mit Olly ans Offset zu kommen. Mach einen Rechtsklick im Hex dump --> go to expression --> Adresse --> OK. Dann machst du einen Rechtsklick auf
das erste Byte im Hex dump und klickst auf Memory breakpoint on write.
So jetzt mach was beim Spiel was den Wert an der Addresse verändert und das Spiel wird durch den Breakpoint stoppen. In Olly könntest du dann zum Beispiel folgendes sehen:
mov [eax+50], edx
Dort ist dann die Baseaddresse in eax und das Offset ist 0x50.
Danke ich werd mal suchen Adroxx,

aja und das Offset krieg ich mit cheatengine auch raus, nur den pointer eben nicht.
11/28/2009 17:41 XxBestxX#10
Quote:
Originally Posted by Medix View Post
Danke ich werd mal suchen Adroxx,

aja und das Offset krieg ich mit cheatengine auch raus, nur den pointer eben nicht.
habe das gleiche problem ... egal was ich mache oder wie ich es mache ich füge den "pointer" immer hinzu nur wenn ich dann mein spiel beende und wieder neu starte war es nicht der pointer ... :(