EXE Datei als Ressource - Prozess direkt im RAM starten?



  • Hallo zusammen,

    ich habe eine EXE Datei als Ressource in eine andere Applikation eingebaut. Zur Laufzeit wird die Ressource geladen, gelocked und der Inhalt in den RAM geschrieben (ich habe einen Handle zu der Startadresse der Ressource).

    Gibt es eine Möglichkeit, die Ressourcen-Applikation jetzt sofort durch Übergabe des EntryPoints zu starten ?

    Gibt es eine Möglichkeit, ohne CreateProcess (braucht ja eine Festplattendatei) einen Prozess zu starten?

    Vielen Dank und
    schöne Grüße
    christian



  • nee sowas geht ned, du musst CreateProcess benutzen



  • Unter NT ff geht es. Demo in Delphi: http://www.michael-puff.de/dirindex.php?folder=Developer/Delphi/Importe/Nico/ -> inmemexe.zip



  • Eine EXE muss immer auf einem Medium vorliegen um von dort gestartet zu werden. Alles andere ist nicht offiziell supportet.
    Du kannst aber die EXE in ein Temp-Verzeichnis speichern und gleich zum löschen Markieren, wenn das letzt Handle gelöscht wird (also sich der Prozess beendet).



  • Jochen Kalmbach schrieb:

    Alles andere ist nicht offiziell supportet.

    Wasnicht heißt, dass es nicht ginge. 😉 Aber stimmt natürlich, man sollte seine Finger von solch undokumentierten Hacks lassen.



  • Gast Luckie schrieb:

    Jochen Kalmbach schrieb:

    Alles andere ist nicht offiziell supportet.

    Wasnicht heißt, dass es nicht ginge. 😉 Aber stimmt natürlich, man sollte seine Finger von solch undokumentierten Hacks lassen.

    kannste das mal näher ausführen, würde mich auch mal interessieren wie sowas gehen soll...sowas wie exec() für posix gibts ja bei windows ned???!



  • Hallo zusammen,

    danke für eure Antworten.

    Dass das nicht offiziell supportet wird, dachte ich mir schon. Kann mir jemand trotzdem in diesem Punkt weiterhelfen, evtl. mit inline-Assemlber?
    Ich habe schonmal versucht, einfach an den EntryPoint der Applikation mit einem "jmp" Befehl zu springen. Das wäre ja aber auch zu einfach gewesen, denn es wird dann ja weder ein richtiger Prozess noch ein Thread initialisiert.

    Dass es funktionieren muss, weiß ich, da es viele Exepacker gibt, die im Endeffekt auch nur eine einzige EXE datei sind, die sich beim Aufruf selbst entpackt und! aufruft. Allerdings ist das ja dann ein Prozess.

    Kann mir jemand, evtl. ein Assembler-Profi, in einer der Hinsichten weiterhelfen?

    Vielen Dank für eure Mühe!

    Grüße
    Christian



  • Ich habe doch oben auf ein Beispiel in Delphi verwiesen.



  • ja delphi kann ich aber nicht. ich will ja auch keinen code sondern hören wie es geht



  • Hallo,

    danke für dein Beispiel. Leider habe ich kein Delphi und darin noch nie programmiert. Ich habe gehofft, jemand könne mir die Thorie dahinter in C++ aufzeigen. Außerdem sollte die Software nach Möglichkeit auch auf Win98 laufen, wobei das eigentlich auch möglich sein muss.

    Trotzdem vielen Dank!

    Gruß
    Christian



  • Die entscheidenden Dateien *.dpr und *.pas kann man zur Not auch in Notepad öffnen. Und die API Funktionen heißen, oh Wunder, genauso wie unter C/C++.



  • na is mir zu doof, ergo geht es ned.



  • Nur weil es für dich zu doof ist, dich mal mit etwas anderem außer C/C++ auseinanderzusetzen, heißt es nicht, dass es nicht geht. Und wenn du dir noch nicht mal die Mühe machst, dir den Code auch nur mal anzugucken, dann kann es nicht so wichtig gewesen sein.

    Was meist du, wie weit ich als Programmierer gekommen wäre, wenn ich nicht bereit gewesen wäre mir mal C/C++ Code anzugucken?

    Aber OK, mach aber nachher nicht uns dafür verantwortlkich, dass du es nicht hinbekommen hat.



  • LOL? mir ist es zu blöd mich durch irgendwelchen dummen pascal code zu wurschteln. und dem threadersteller offensichtlich auch. mich würde es interessieren wie es gehen soll aber wenn du 1337 bist uns es kurz zu erklären...dann spamme bitte den thread nid weiter mit unnützem gelaber zu, danke.



  • fsdasd schrieb:

    LOL? mir ist es zu blöd mich durch irgendwelchen dummen pascal code zu wurschteln. und dem threadersteller offensichtlich auch. mich würde es interessieren wie es gehen soll aber wenn du 1337 bist uns es kurz zu erklären...dann spamme bitte den thread nid weiter mit unnützem gelaber zu, danke.

    Held! Wenn du s nicht mal hinbekommst Pascal zu lesen bezweifel ich mehr als stark, dass du in C++ irgendwas reißt ... hab mir den Source gerade mal angeschaut ... ich würde zwar auch ne temporäre Datei erstellen und diese per CreateProcess starten, aber prinzipiell is das durchschaubar.

    Greetz 😉



  • jo du held dann sag doch bitte an was der code macht anstelle hier unnötig weiter zu flamen. ohne arrogant klingen zu wollen aber ich reisse in hier bestimmt mehr als du. ich hab schon einen ganz guten plan keine angst.



  • Der Code ist von einem Freund und ich habe an keiner Stelle behauptet, dass ich ihn verstehe oder erklären könnte, da ich mich damit noch nicht auseinandergesetzt habe. Aber ich bin mir sicher, wenn ich es tun würde, könnte ich es auch verstehen, selbst wenn er, für mich als Delphi Programmierer gesehen, in C wäre. Und was gibt es an Delphi Code zu verstehen, wenn er zu 95% aus API Aufrufen besteht, die man alle im PSDK nachschlagen kann?


Anmelden zum Antworten