17.08.2014, 17:11
(Dieser Beitrag wurde zuletzt bearbeitet: 17.08.2014, 17:16 von iNvIcTUs oRCuS.)
Nicht wirklich...
Aber das erste Offset ist eben nicht 24h sondern 74h.
Ich hab mir mal die Pointergeschichte bei diesem Game angeschaut. Für nen Anfänger ist das hier nichts, hier muss man viel mit dem Debugger handieren und beobachten etc.
Das geht/ging sogar soweit das bei mir das Spiel dann auch abstürtzt wenn ich diverse Breakpoints setze.
Und warum ist das erste Offset 74h und nicht 24h?
Ganz einfach...
Guckst Du hier...
Screenshot 1 zeigt die gefundene Ammo Adresse und welcher Befehl diese Adresse ausliest.
Hier haben wir ja das (eigentliche) erste Offset von 24h.
Aber hier merken wir uns erstmal das die nächste Adresse im Pointerpfad im Register ECX steht. Also schauen wir mal wo der Wert in das ECX Register geschoben wird. Auf diesen Befehl setzen wir einen Breakpoint so das dass Spiel unterbrochen wird. Nun drücken wir einmal die Taste F8 und kommen zu dem Befehl darunter, dem RET (Return). Hier drücken wir nochmal F8 und gelangen schließlich wieder raus aus dieser Subroutine (Call). Siehe Screenshot Nr. 2.
Und wenn wir da mal etwas weiter oben schauen sehen wir das der Wert des ECX Registers durch den Befehl "lea ecx [ecx+eax*8]" geändert wird. Und da hier das ECX Register doppelt in diesem Befehl vorkommt setzen wir einfach mal einen Breakpoint auf diesen Befehl. Wenn wir nun mit der Taste F9 das Spiel kurz weiterlaufen lassen breaken wir auch sofort bei diesem Befehl und sehen dann folgendes wie im Screenshot 3 zu sehen ist.
Und hier wirds nun auch richtig interessant. Im Register EAX steht der Wert 0Ah. Und dieser wird, wie wir wissen, mit 8 multipliziert und zum ECX Register dazu addiert und weiterverarbeitet. Kurzum zusammengefasst bedeutet das folgendes...
EAX = 0A -> multipliziert mit 8 -> 0A * 8 = 50h.
Das vermeintliche erste Offset von 24h müssen wir natürlich noch dazu addieren.
Also gehts weiter mit 50h + 24h = 74h.
Also ist 74h unser erstes, bzw. letztes, effektives Offset im Pointerpfad. Also ziehen wir von der Munitionsaddy diesen Wert ab -> 199B22C4 - 74 = 199B2250.
Also müssen wir zuerst nach dieser HEX Adresse suchen...
Aber wie ich anfangs schon sagte stürtzt mein Spiel ab diesen Zeitpunkt öfters ab wenn ich weiter Breakpoints setze. Mit OllyDBG habschs nur mal kurz probiert. Daher vermute ich das nächste Offset bei angefangen 2B4, oder geringfügig höher. Und wie ich auch bereits sagte würde ich einem Anfänger davon abraten hier stur weiter zu suchen. Auch ich nutze dafür eine einfache Codeinjection und habe anstatt eines Unlimited Ammo Cheats, einen Unlimited Items Cheat drausgemacht und fertsch is der Lack.
Aber das erste Offset ist eben nicht 24h sondern 74h.
Ich hab mir mal die Pointergeschichte bei diesem Game angeschaut. Für nen Anfänger ist das hier nichts, hier muss man viel mit dem Debugger handieren und beobachten etc.
Das geht/ging sogar soweit das bei mir das Spiel dann auch abstürtzt wenn ich diverse Breakpoints setze.
Und warum ist das erste Offset 74h und nicht 24h?
Ganz einfach...
Guckst Du hier...
Screenshot 1 zeigt die gefundene Ammo Adresse und welcher Befehl diese Adresse ausliest.
Hier haben wir ja das (eigentliche) erste Offset von 24h.
Aber hier merken wir uns erstmal das die nächste Adresse im Pointerpfad im Register ECX steht. Also schauen wir mal wo der Wert in das ECX Register geschoben wird. Auf diesen Befehl setzen wir einen Breakpoint so das dass Spiel unterbrochen wird. Nun drücken wir einmal die Taste F8 und kommen zu dem Befehl darunter, dem RET (Return). Hier drücken wir nochmal F8 und gelangen schließlich wieder raus aus dieser Subroutine (Call). Siehe Screenshot Nr. 2.
Und wenn wir da mal etwas weiter oben schauen sehen wir das der Wert des ECX Registers durch den Befehl "lea ecx [ecx+eax*8]" geändert wird. Und da hier das ECX Register doppelt in diesem Befehl vorkommt setzen wir einfach mal einen Breakpoint auf diesen Befehl. Wenn wir nun mit der Taste F9 das Spiel kurz weiterlaufen lassen breaken wir auch sofort bei diesem Befehl und sehen dann folgendes wie im Screenshot 3 zu sehen ist.
Und hier wirds nun auch richtig interessant. Im Register EAX steht der Wert 0Ah. Und dieser wird, wie wir wissen, mit 8 multipliziert und zum ECX Register dazu addiert und weiterverarbeitet. Kurzum zusammengefasst bedeutet das folgendes...
EAX = 0A -> multipliziert mit 8 -> 0A * 8 = 50h.
Das vermeintliche erste Offset von 24h müssen wir natürlich noch dazu addieren.
Also gehts weiter mit 50h + 24h = 74h.
Also ist 74h unser erstes, bzw. letztes, effektives Offset im Pointerpfad. Also ziehen wir von der Munitionsaddy diesen Wert ab -> 199B22C4 - 74 = 199B2250.
Also müssen wir zuerst nach dieser HEX Adresse suchen...
Aber wie ich anfangs schon sagte stürtzt mein Spiel ab diesen Zeitpunkt öfters ab wenn ich weiter Breakpoints setze. Mit OllyDBG habschs nur mal kurz probiert. Daher vermute ich das nächste Offset bei angefangen 2B4, oder geringfügig höher. Und wie ich auch bereits sagte würde ich einem Anfänger davon abraten hier stur weiter zu suchen. Auch ich nutze dafür eine einfache Codeinjection und habe anstatt eines Unlimited Ammo Cheats, einen Unlimited Items Cheat drausgemacht und fertsch is der Lack.
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!
Traineranfragen per PM werden prinzipiell gelöscht...
Traineranfragen per PM werden prinzipiell gelöscht...