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 14

    Weiß 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
    

Anmelden zum Antworten