Home of Gamehacking - Archiv

Normale Version: CodeCave Frage?
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moinsen,

dieses Ding von mir, um esi zu speicher lässt das Spiel sofort abstürzen:
[attachment=1500]

Ich hab nicht verstanden wieso, aber nach einigen Stunden hab ich herausgefunden, dass ich den Wert darunter speichern kann also:
[attachment=1501]

Jemand ne Ahnung, oder kann mir erklären, warum das erste nicht funktioniert, aber das zweite schon?

//Edit: Ok, liegt doch nicht daran, ich hab was falsch gemacht. Wäre auch komisch gewesen. Liegt an dem call Aufruf.
Wenn ich mit der relativenAdd rufe "call 10940000 - E8 E77A3FAF" funktioniert es, aber mit "call dword ptr [10940000] - FF 15 00009410" geht es nicht. Weiß da jemand warum? :blush:
Das Rätsel ist ganz schnell gelöst...
Wenn Du den Befehl "call 10940000" aufrufst wird ganz normal der Code ausgehend von Adresse 10940000h aufgerufen bzw. abgearbeitet bis ein Rücksprung, in diesem Falle Return (kurz ret) kommt.
Rufst Du allerdings den Befehl "call dword ptr [10940000]" dann ist die aufzurufende Adresse im Speicher an Adresse 10940000h zu finden.

Schau dir mal den zweiten Screenshot an...
Da stehen an Adresse 10940000h folgende 4 Bytes...
8B 4E 30 8B

Du könntest also den Befehl "call dword ptr [10940000]" auch so interpretieren...
"call 8B304E8B"
Und da dürfte dir jetzt eigentlich auch klar sein das die Adresse 8B304E8B ziemlich utopisch ist. Entweder ist dieser Speicherbereich schreibgeschützt oder dort sind keine Daten zu finden. Wenn Du da in Cheat Engine unterhalb des Dissassembler Fenster schaust dürftest Du an jener Adresse auch nur Fragezeichen sehen. Es reicht aber auch schon aus wenn dort Platzhalter zu finden sind oder einfach nur Nullen, schon crasht das Ganze...

Das ist der Ganze Zauber...
Ouh, fail von mir. Klar wir das als Zeiger interpetriert da steht ja auch ptr :s. Ok alles klar, danke.