Programm in runtime beschreiben?



  • Hallo,

    es gibt da so eine Sache die ich mir von einem anderem
    Programm abgeguckt habe 😃
    Es geht darum, dass das Programm eine Ausführbare Datei
    hat (Binär gespeichert, mit einem Pointer zugreifbar)
    Iergendwie Erstellt das Programm nun einen neuen Prozess
    (Leere exe-datei!?) Und schreibt mit WriteProcessMemory
    die Binär gespeicherte Datei in den leeren Prozess, dieser
    wird dann fortgesetzt und das Programm läuft...

    Funktioniert das!?
    Welche API's brauche ich dafür?
    Wie erstelle ich eine leere exe-datei im Speicher?
    Kann ich den Speicher schützen?
    Wie sage ich dem Programm wo der entrypoint ist?

    Danke schonmal 👍



  • Hi

    Für dass was du da vor hast solltest du dich SEHR GUT mit dem
    System aus kennen, für Anfänger ist das nichst.

    Hier ein par API's :

    CreateRemoteThread
    VirtualAllocEx
    WriteProcessMemory
    ReadProcessMemory

    Ich hab mal Code von mir in einem anderen Programm zur Laufzeit eingeschleust,
    und dass ging so:

    1.) Speicher im Prozess mit VirtualAllocEx
    2.) Den neueun Code mit WriteProcessMemory in den Prozess kopieren
    3.) Einen Remote Thread starten der den Code ausführt.

    Das ist aber alles nicht so einfach. Du must schauen das alle
    Addresse richtig reallokiert werden (z.B. Zeiger auf API-Funktionen)
    DLL muss du laden die der Prozess noch nicht geladen hat.
    Das alles ist nicht so einfach, einige Probleme konne ich nur
    mit Assembler lösen.


Anmelden zum Antworten