eine prozess erzeugen ohne image auf datenträger



  • Hi,

    Wie können wir einen Prozess erzeugen mit einem Image direkt aus dem Speicher heraus, so daß es nicht auf einem Datenträger im Dateisystem verhanden sein muss!?

    So wie ich es verstehe, erstellt der Windows Loader ein filemapping object mit der Image Datei wenn man CreateProcess aufruft. Was ist nun der einfachste Weg ein Image aus dem Speicher heraus auszuführen? Sollten wir versuchen eine Ersatzfunktionen für die Filemapping funktionen zu erstellen, welche aus Speicheradressen eine filemapping handle zurückliefert? Das erscheint mir sehr schwer!!! Oder sollte man stattdessen einfach seinen eigenen EXE loader schreiben? Das erscheint mir ja sinnvoller, soweit ich weiß, lässt sich mit ZwCreateProcess oder eine ähnlichen Funktion eine leere Prozesshülle erstellen und man müsste nun seine Exe in den Prozessladen und danach die restlichen Systemdienste zum Erstellen eines Threads und zum Informieren des Subsystems usw. aufrufen. Wie sollen wir das am besten machen?



  • lol. Ja.
    Auf die vage Chance hin dass das ernst gemeint ist:
    Speicher das PE Image als Temp-Datei irgendwohin und verwende diese um den Prozess hochzuziehen.
    Oder frag bei OSR Online nach, oder gleich direkt bei Microsoft.



  • runtimepacker erstellen doch auch kein temporäres exe, oder?
    hab allerdings auch noch nicht verstanden, wie die funktionieren können, da die ja ihren eigenn code entpacken müssen, das heißt entweder entpackern die den auf dem heap und springen dann mit der codeausführung dort hin, oder sie schreiben ins codesegment. Beides ist eigendlich verboten.



  • Wozu soll das gut sein?


  • Mod

    vlad_tepesch schrieb:

    runtimepacker erstellen doch auch kein temporäres exe, oder?
    hab allerdings auch noch nicht verstanden, wie die funktionieren können, da die ja ihren eigenn code entpacken müssen, das heißt entweder entpackern die den auf dem heap und springen dann mit der codeausführung dort hin, oder sie schreiben ins codesegment. Beides ist eigendlich verboten.

    Aber die haben eine EXE als Bootstrapper. .NET funktioniert ja auch so.
    Die EXE/DLL wird dann in den Speicher entgepackt oer kompiliert.
    Ein Image ist dennoch vorhanden. Ganz ohne EXE/DLL kommt man nicht aus.



  • Hier http://www.michael-puff.de/Developer/Delphi/Importe/Nico -> inmemexe.zip hat ein Freund gezeigt, wie man eine Exe aus dem Speicher starten kann. Ist zwar Delphi, aber sollte für dich kein Problem sein den Code zu mindest lesen zu können.


Anmelden zum Antworten