Prozess per Programmcode in den Speicher laden...



  • ...ohne dass die eigentlich EXE je existiert
    So dass der "Loader" das Programm aus einer (verschlüsselten) Datei liest und dann nach dem Entschlüsseln wie eine normale EXE startet - nur mit dem Unterschied, dass das eigentliche Programm beim User nie als EXE vorhanden ist

    Wie geht das?



  • Bestimmt nicht mit Standard C++ (oder nicht vernünftig),
    Soll der Thread ins ASM Forum (da kann dir bestimmt geholfen werden aber ob du es Kapierst?)
    Oder nach Rund um die Programmierung Forum (weniger Chancen auf Lösung dafür wahrscheinlich verständlicher als ASM)

    Oder nach WinApi bzw. Unix Forum du packst die exe als Ressource in die eigentliche exe und Kopierst sie raus (vielleicht kann man sie auch direkt starteten ka)

    Wohin mit meiner Frage?

    [ Dieser Beitrag wurde am 12.10.2002 um 10:39 Uhr von Dimah editiert. ]



  • Verschiebs nach ASM



  • Im Protected mode (windows, linux) darfst du nicht in einem codesegment rumschreiben; also kannst du den code nicht direkt in dem ram laden.
    Du könntest doch einfach eine temporäre datei erstellen, ohne .exe am Ende, die den vollständigen Code enthält. Diese Exe kann sich dann ja am schluss selbst löschen. Wie das geht steht in der WinAPI FAQ.



  • Ich will das halt möglichst ohne temp. Datei machen
    Kann man den Protected Mode irgendwie umgehen?



  • Original erstellt von ThiefMaster:
    Kann man den Protected Mode irgendwie umgehen?

    Dann wäre er nicht protected 😃
    Nicht ohne ienen Kerneltreiber zu schrieben 🙂



  • Wenn Du einmal drin bist nicht, das ist schliesslich Sinn der Sache.
    Es muesste aber auch in Windows eine API-Funktion geben, um ein Datensegment in ein codesegment umzuwandeln, das dann ausgefuehrt werden kann, nur leider kenn ich sie nicht 🙄



  • Eigentlich sollte man doch das ganze Programm erst einmal in den Speicher laden, und dann dem Betriebssystem als einen neuen Prozess melden, oder? Dafür müsste es einen Syscall geben...

    [ Dieser Beitrag wurde am 17.10.2002 um 10:25 Uhr von jantoware editiert. ]



  • CreateThread() sollte brauchbar sein.

    [ Dieser Beitrag wurde am 17.10.2002 um 10:31 Uhr von jantoware editiert. ]



  • Also der PMode stellt kein echtes Hindernis für das vorhaben da (erst recht nicht unter Windows).
    Zum einen ist es im PMode möglich für ein und den selben Speicherbereich mehrere Deskriptoren zu erstellen und zu verwenden. D.h. z.B. einen Code-Deskriptor (zum Ausführen) und einen Data-Deskriptor (zum Schreiben).
    Allerdings wirst du damit nicht so viel zu tun bekommen, da du dich unter Win da am bestenen an die debug-Funktionen (Read/WriteProcessMemory o. so ähnlich) hälst.

    mfg
    -bg-


Anmelden zum Antworten