Problem mit WriteProcessMemory
-
hi leute!
Leider muss ich euch schonwieder nerven, und zwar weil mein Programm mal wieder mist macht!
Alsooo:
Ich will einen trainer schreiben, der einige ASM opcodes eines Spiels während der laufzeit so ändert, das ich unendlich leben, undendlich munition ect. habe.
Dieses mache ich mit hilfe von WriteProcessMemory. Hier ein teil des codes:unsigned adresse = 0x00412502; int opcode = 0x8B7C2414; ... WriteProcessMemory(hproc,(LPVOID)adresse,&opcode,4,NULL);
Das Problem ist, das die opcodes 8B7C2414, welche ja 4 byte groß sind, nicht korrekt in die adresse 00412502 eingetragen werden. Sie landen irgendwie wild verteilt in den daneben liegenden Adressen.Wenn ich nur einen byte großen opcode eintragen will (z.B 90) dann klappt alles wunderbar, nur wenn es dann mehrere sein sollen, gibt es probleme.
Normalerweise müsste der Code, nachdem ihn mein trainer bearbeitet hat, so ausehen:
00412502 8B
00412503 7C
00412504 24
00412505 14Weiß jemand wie ich das machen muss?
Danke im Vorraus
-
Das scheint mir ein Little-/ Big-Endian Problem zu sein. Die Intels speichern das Lo-Byte zuerst. Wenn Du das umdrehst, sollte es gehen.
int opcode = 0x8B7C2414; // falsch int opcode = 0x14247C8B; // richtig