Prozess mit Informationen aus Arbeitsspeicher erstellen?



  • Hallo Forum,

    leider hab ich in der Suche nichts brauchbares gefunden obwohl ich denke, dass es zu diesem Thema bestimmt was geben müsste. Also wenn einer nen Link hat nur her damit 😉

    Gibt es eine Möglichkeit, ein Programm zu starten, dessen Binärcode ich schon im Arbeitsspeicher halte?

    Oder muss ich den umständlichen Weg wählen, und die Datei auf die Platte schreiben und mit CreateProcess() ausführen?

    Aber das OS liest ja dann auch erstmal das binary ein und führt es erst dann aus, also wäre dieser Umweg ja wirklich fürn Ar***.

    Danke schonmal im Voraus 😉

    mfg jghj



  • Die WinAPI bietet Dir hier keine Unterstützung an. Du musst es also in eine Datei schreiben (kannst ja das Flag FILE_FLAG_DELETE_ON_CLOSE setzen) und dann starten.
    Undokumentierte Wege scheint es zu geben, würde ich aber abraten...



  • Das OS macht aber noch etwas mehr als "nur" den Dateiinhalt in den RAM zu kopieren (z.B. Stack und Heap bereitstellen, Adressraum definieren etc) - und wenn du es wirklich darauf anlegst, mußt du dich um all diese Belange selber kümmern.

    (aber womöglich reicht es dir ja aus, den Code in einem neuen Thread auszuführen - was hast du eigentlich vor? und woher kommt der Code, den du im Speicher hast?)



  • Danke für die Antworten.

    @Kalmbach
    Kennst du ne URL zu sonem undokumentierten Weg? Dass ich mir wenigstens mal ein Bild davon machen kann?

    @CStoll
    Was das OS da noch alles macht ist mir schon klar. Aber es geht ja nur um den Code. Also ich greife ja nicht mitten in den bereich von reservierung usw. sondern an den Anfang (nämlich das in den Speicher laden). Deshalb hätte ichs für logisch gehalten wenn es da eine Funktion gibt mit der man das direkt übergeben kann.

    In einem Thread dürfte es eigentlich auch reichen.
    Ich Programmiere gerade ein Autoupdater und möchte einfach ein paar Funktionalitäten ausreizen 😉

    mfg jghj



  • jghj schrieb:

    ...ne URL zu sonem undokumentierten Weg? Dass ich mir wenigstens mal ein Bild davon machen kann?

    guckst du: http://book.itzero.com/read/microsoft/0507/Microsoft.Press.Microsoft.Windows.Internals.Fourth.Edition.Dec.2004.internal.Fixed.eBook-DDU_html/0735619174/ch06lev1sec2.html


Anmelden zum Antworten