Debuger frage!
-
nu ja ok ich weiss das es immer esi + 248 heisst wenn ich jetzt die stelle finde wo esi eubergeben wird wie könnte ich diese auslesen?
-
Wie ich bereits schrieb:
Wenn esi von einer festen Adresse ausgelesen wird eruebrigt sich die Frage, denke ich.
zB. "mov esi, [0x123456]"
Falls nicht, musst du weiter suchen, wo der Pointer, der auf die Adresse fuer esi zeigt, gesetzt wird, usw. bis du irgendwann einen Pointer an einer festen Adresse findest, den du als Basis nehmen kannst.
-
muss ich dann immer mit Breakpoints arbeiten, die mit "what writes this" arbeiten ? oder
-
So bekommst du deinen Pointer zum Auslesen deines Wertes.
Du kannst an die Sache zwar auch mit Breakpoints herangehen, das ist aber eine andere Geschichte.
-
Also ich habe jetzt echt ne halbe stunde nach dem Anfang der sache gesucht aber ich lass mich anscheint zu shcnell verwirren. Ich habe mal eine Text Datei hochgeladen wo der Speicherausschnitt zusehen ist.
Die beiden Pointer die auf die Offset Adresse verweisen sind:
- 6F14BD48 // Leben
- 6F14BF51 // ManaHabs auch noch mal in der Datei angemarkt.
http://www.file-upload.net/download-643093/Searching_for_ESI.txt.html
Waer nett von euch, wenn ihr mir mal Zeigen koenntet wie man das, da zurueck verfolgt. Ich dneke mal nen wirkliches Tutorial gibts dafuer nicht oder?, also waer echt voll toll.
Gruß Tobi.
-
Damit kann man leider kaum was anfangen.
Offenbar ist doch die Adresse im Code, an der die HP-Manipulation stattfindet, konstant. Also schnapp dir einen guten Debugger (vielleicht OllyDgb), setze an dieser Adresse einen Breakpoint in den Code und versuche anhand der call history nachzuvollziehen, welcher Code durchlaufen wurde. So wie es fuer mich aussieht, scheint esi in diesem Code-Ausschnitt ueber 2 call-Ebenen ueber ecx weitergereicht worden zu sein, wobei die der zuletzt aufrufende Code-Teil nicht mehr in diesem Ausschnitt liegt. Wirst also wohl ein Weilchen suchen muessen.
-
Wo seh ich in Olly die call history?
-
AFAIR normalerweise rechts unten im Stack-Fenster.
-
also ich habe bei dem Speicherausschnitt mal bei der ersten adresse ganz oben einen BP gesetzt, und festgestellt das ESI schon dort mit dem gesuchten inhalt belegt war, wie komme ich da jetzt weiter?
-
Also bei ... 6F14B000 oder wo?
Wie ich schon mehrmals geschrieben habe, musst du den Code von dieser Stelle rueckwaerts durchlaufen, unter Beachtung der Call history auf dem Stack, und schauen, wo esi gesetzt wird.