26.02.2013, 02:15
Guten Tag,
ich habe mir für den ersten Versuch den Horizont des einfachen "suchen und verändern" zu verlassen, ein scheinbar schwieriges Spiel ausgesucht.
Ich habe mich bei diesem Versuch an das Cheat Engine Forum gehalten, in dem jemand den "money" wert in der Version 1.03 ändert, seit dieser Version scheint aber eine zusätzliche "Sicherung" in das Programm eingefügt worden zu sein die diesen Vorgang erschwert.
Da für mich die meisten Begriffe ESI,ECX mov, comp etc. Böhmische Dörfer darstellen habe ich mich nun erst einmal mit den Registern und Befehlen ein wenig vertraut gemacht. Bis ich diese aber in einem Gebrauchsfähigen Zustand verstehe dauert es noch ein wenig, ich bitte daher um Nachsicht
Nun zu meinem Problem (Anhang 1)
Ich starte das Spiel,suche mir meinen Wert in diesem Fall
h00000028 = d40 / 02803854
nun suche ich was in diese Adresse schreibt
mov [esi+000001E4],eax
ich halte mich dann an die Anleitung aus dem Cheat Engine Forum und suche erst einmal die Pointer für den "Money" Betrag und den dazu passenden Xor Schlüssel
in diesem Fall
07ABD440 xor 07ABD450
ändere ich jetzt 02803854 sowie 07ABD440 xor 07ABD450 auf den von mir gewünschten Betrag, ändert sich dieser auch im Spiel so lange bis ich mein breakpoint entferne und durch "Run" den gewohnten Gang anstoße.
Möglicherweise müsste man die Änderung des wertes über eine Code Injection realisieren, dabei wüsste ich aber derzeit nicht wo und auch nicht zu 100% wie.
Ich gehe nun davon aus das der Original wert irgendwo gespeichert wird und an spätere Stelle mit dem von mir geänderten Wert verglichen wird z.B. mit comp und bei Unstimmigkeit eben der Original Code wieder verwendet wird.
Darum habe ich mir angesehen was auf die Adresse schreibt in der sich der durch Xor verschlüsselte Geldwert befindet und bin auf folgendes gestoßen (Anhang 2)
mov [edx],eax / 0046A5F7
da sich diese Zeile im Bereich "call 0046A5D0" befindet gehe ich davon aus das hier irgendwie der Geldwert zusammengesetzt und überprüft wird, dennoch erschließt sich mir der Ablauf des ganzen nur unvollständig.
Nun zu meiner Frage, ich möchte keine Lösung für das Problem, da ich doch sehr interessiert bin an dem Geschehen und würde so fern es mir möglich ist die Lösung selbst erarbeiten. Dafür bräuchte ich aber einen Tip wo und wie ich am besten verfahren sollte und das Problem an zu gehen und vielleicht einen Ratschlag welche Lektüre, Tutorial oder ähnliches mir weiter helfen könnte.
Ich habe hier im Forum schon so einiges gelesen, nur ist es schwer eine Unbekannte Sprache zu verstehen
Dies ist derzeit mein Lei*d*faden
x86 Assembly Guide
Mit freundlichen Grüßen
Injexdoor
ich habe mir für den ersten Versuch den Horizont des einfachen "suchen und verändern" zu verlassen, ein scheinbar schwieriges Spiel ausgesucht.
Ich habe mich bei diesem Versuch an das Cheat Engine Forum gehalten, in dem jemand den "money" wert in der Version 1.03 ändert, seit dieser Version scheint aber eine zusätzliche "Sicherung" in das Programm eingefügt worden zu sein die diesen Vorgang erschwert.
Da für mich die meisten Begriffe ESI,ECX mov, comp etc. Böhmische Dörfer darstellen habe ich mich nun erst einmal mit den Registern und Befehlen ein wenig vertraut gemacht. Bis ich diese aber in einem Gebrauchsfähigen Zustand verstehe dauert es noch ein wenig, ich bitte daher um Nachsicht
Nun zu meinem Problem (Anhang 1)
Ich starte das Spiel,suche mir meinen Wert in diesem Fall
h00000028 = d40 / 02803854
nun suche ich was in diese Adresse schreibt
mov [esi+000001E4],eax
ich halte mich dann an die Anleitung aus dem Cheat Engine Forum und suche erst einmal die Pointer für den "Money" Betrag und den dazu passenden Xor Schlüssel
in diesem Fall
07ABD440 xor 07ABD450
ändere ich jetzt 02803854 sowie 07ABD440 xor 07ABD450 auf den von mir gewünschten Betrag, ändert sich dieser auch im Spiel so lange bis ich mein breakpoint entferne und durch "Run" den gewohnten Gang anstoße.
Möglicherweise müsste man die Änderung des wertes über eine Code Injection realisieren, dabei wüsste ich aber derzeit nicht wo und auch nicht zu 100% wie.
Ich gehe nun davon aus das der Original wert irgendwo gespeichert wird und an spätere Stelle mit dem von mir geänderten Wert verglichen wird z.B. mit comp und bei Unstimmigkeit eben der Original Code wieder verwendet wird.
Darum habe ich mir angesehen was auf die Adresse schreibt in der sich der durch Xor verschlüsselte Geldwert befindet und bin auf folgendes gestoßen (Anhang 2)
mov [edx],eax / 0046A5F7
da sich diese Zeile im Bereich "call 0046A5D0" befindet gehe ich davon aus das hier irgendwie der Geldwert zusammengesetzt und überprüft wird, dennoch erschließt sich mir der Ablauf des ganzen nur unvollständig.
Nun zu meiner Frage, ich möchte keine Lösung für das Problem, da ich doch sehr interessiert bin an dem Geschehen und würde so fern es mir möglich ist die Lösung selbst erarbeiten. Dafür bräuchte ich aber einen Tip wo und wie ich am besten verfahren sollte und das Problem an zu gehen und vielleicht einen Ratschlag welche Lektüre, Tutorial oder ähnliches mir weiter helfen könnte.
Ich habe hier im Forum schon so einiges gelesen, nur ist es schwer eine Unbekannte Sprache zu verstehen
Dies ist derzeit mein Lei*d*faden
x86 Assembly Guide
Mit freundlichen Grüßen
Injexdoor