Hab eine komplizierte Frage



  • Hi, ich hab eine (für meine Verhältnisse) eher komplizierte Frage und zwar:
    Ich habe eine dll in einen Prozess injeziert, und würde nun gern mit dieser dll einen Befehl an einer bestimmten Adresse abändern und zwar der Befehl ist:

    6FAE1EFE 81FE 30750000 CMP ESI,7530

    daraus soll : CMP ESI,3000 werden. Ich probier jetzt schon seit einiger Zeit herum, aber ich bekomms einfach nicht hin. Kann mir da bitte jemand helfen?
    danke schonmal 🙂 .



  • Was soll denn das für ein Befehl sein? Und wo steht der?

    (im Zweifelsfall - Assambler-Befehle kannst du fast 1:1 in Bytemuster übersetzen - dann mußt du ihn nur noch suchen und ersetzen)



  • CStoll schrieb:

    Was soll denn das für ein Befehl sein? Und wo steht der?

    (im Zweifelsfall - Assambler-Befehle kannst du fast 1:1 in Bytemuster übersetzen - dann mußt du ihn nur noch suchen und ersetzen)

    Hm, der Befehl gehört zu einer Funktion, die überprüft ob bereits 30 Sekunden (30000 Millisekunden = 7530) vergangen sind. Ich wollte diese 30000 Millisekunden auf einen kleineren Wert ändern, habe aber keine Ahnung wie.

    Darum hab ich gehofft, dass mir hier vielleicht jemand helfen könnte. Wahrscheinlich ist das ganze nur eine Programmzeile, aber ich komm einfach nicht drauf 😉 .



  • Und welches Spiel willst du damit cheaten?

    Wenn du weißt, wo genau in deinem Programm das steht, sind das wirklich nur drei Programmzeilen:

    ofstream exe("das_programm.exe",ios::out|ios::binary);
    exe.seekp(zielposition);
    exe.write(neuer Befehl);
    

    (wie dieser Befehl in "Reinform" aussieht, kannst du evt. im Assambler-Board erfragen - aber das dürfte abhängig von deinem System sein)

    PS: Aber nimm dir lieber den Original-Quelltext deiner Funktion vor, ändere die Wartezeit dort und compiliere neu - das ist einfacher und weniger fehleranfällig.



    1. Ich will gar nichts Cheaten, sondern eine Verbindungstimeoutzeit heruntersetzen.
    2. Danke.
    3. Ich möchte das ganze aber bitte mit einer injezierten dll während der Laufzeit machen, und nicht die komplette Exe Datei verändern. Und eben genau da weiss ich nicht , wie ich das machen soll. Ich weiss nur, dass es definitiv funktioniert.


  • uh, dann musst du im Codesegment des prozesses rumpfuschen... dürfte wohl eher kompliziert werden. vl mit writeprocessmemory?



  • Hmm, funktionierts vielleicht mit dem Befehl hier:
    http://www.cplusplus.com/reference/clibrary/cstring/memcpy.html
    ?



  • glaub ich kaum. Ich glaub sowieso kaum, dass du schreibrechte auf das Codesegment bekmmst



  • WinAPI-Lösung :

    6FAE1EFE 81FE 30750000 CMP ESI,7530
    6FAE1EFE 81FE 00300000 CMP ESI,3000

    OpenProcess () VirtualProtectEx () WriteProcessMemory () CloseHandle ()



  • der macht nen hack -.-
    haha hoffentlich wirst vacbanned 🙂


Anmelden zum Antworten