08.07.2011, 03:06
Richtig!
Das die Virtuelle Adresse anders sein kann sieht man ja ganz deutlich bei einer DLL. Aber eben ImageBase/ModulBase + Offset = Virtual Adress. Somit sind auch die Sprungweiten immer gleich. Das sieht man auch schön bei den DLL's.
Womit es ein Problem geben könnte ist, wenn man einen eigenen Check mit einbaut.
Wenn man z.b. zu seinem Geld etwas hinzuaddieren möchte und die Cheats in der DLL stehen und die Codeinjection z.b. folgendermaßen aussieht...
[code=ASM]
10800400 - 80 3D 00038010 01 - cmp byte ptr [10800300], 0x01
10800407 - 75 11 - jne 1080041A
10800409 - 81 80 F2050000 10270000 - add [eax+000005F2], 0x2710h
10800413 - C6 05 00038010 00 - mov byte ptr [10800300], 0x00
1080041A - Originalcode wiederherstellen und Jump raus aus Codecave
[/code]
Wenn also an Adresse 10800300 das Byte 01 gefunden wird, bzw. der Vergleich erfolgreich ist, wird der Cheat ausgeführt ansonsten ganz normal fortgefahren. In einer EXE mit fester Modulbasis klappt das perfekt, aber bei einer DLL z.b. kann beim nächsten Start diese schon wieder nicht dieselbe Modulbasis haben, aber geprüft würde nachwievor das Byte an Adresse 10800300. Und der Befehl das nach dem Ausführen des Cheats an selbiger Adresse das Byte auf den Wert 0 zurückgesetzt wird kann somit auch fatale Folgen haben...
Das die Virtuelle Adresse anders sein kann sieht man ja ganz deutlich bei einer DLL. Aber eben ImageBase/ModulBase + Offset = Virtual Adress. Somit sind auch die Sprungweiten immer gleich. Das sieht man auch schön bei den DLL's.
Womit es ein Problem geben könnte ist, wenn man einen eigenen Check mit einbaut.
Wenn man z.b. zu seinem Geld etwas hinzuaddieren möchte und die Cheats in der DLL stehen und die Codeinjection z.b. folgendermaßen aussieht...
[code=ASM]
10800400 - 80 3D 00038010 01 - cmp byte ptr [10800300], 0x01
10800407 - 75 11 - jne 1080041A
10800409 - 81 80 F2050000 10270000 - add [eax+000005F2], 0x2710h
10800413 - C6 05 00038010 00 - mov byte ptr [10800300], 0x00
1080041A - Originalcode wiederherstellen und Jump raus aus Codecave
[/code]
Wenn also an Adresse 10800300 das Byte 01 gefunden wird, bzw. der Vergleich erfolgreich ist, wird der Cheat ausgeführt ansonsten ganz normal fortgefahren. In einer EXE mit fester Modulbasis klappt das perfekt, aber bei einer DLL z.b. kann beim nächsten Start diese schon wieder nicht dieselbe Modulbasis haben, aber geprüft würde nachwievor das Byte an Adresse 10800300. Und der Befehl das nach dem Ausführen des Cheats an selbiger Adresse das Byte auf den Wert 0 zurückgesetzt wird kann somit auch fatale Folgen haben...
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!
Traineranfragen per PM werden prinzipiell gelöscht...
![[Bild: signatur6akm7.gif]](https://abload.de/img/signatur6akm7.gif)
Traineranfragen per PM werden prinzipiell gelöscht...
![[Bild: signatur6akm7.gif]](https://abload.de/img/signatur6akm7.gif)