Exe aus Speicher ausführen



  • Hallo Leute,

    Ich wusste nicht genau, wie ich mein Problem in der Überschrift beschreiben sollte, deshalb habe ich mal diesen mehr oder weniger viel aussagenden Titel gewählt. Es geht um folgendes Problem:
    Ich möchte in meinem Programm gerne eine Exe-Datei ausführen. Dies wäre sicher kein Problem und via "ShellExecute()" schnell realisierbar, jedoch soll diese Exe-Datei nicht lokal auf der Festplatte vorliegen, sondern die Daten der Exe-Datei sollen sich nur im Speicher meines Programms befinden und von dort ausgeführt werden.
    Da ich mir ziemlich sicher bin, dass dies von Ansi-C++ nicht unterstützt wird, habe ich mich dazu entschieden, mein Problem hier zu beschreiben, in der Hoffnung, dass dies irgendwie mit der WinAPI machbar ist. Meine Fragen sind also, ob mein Vorhaben so umgesetzt werden kann, und wie man das dann am klügsten verwirklicht.

    Ich bin um jede Antwort dankbar 🙂



  • das hört sich seltsam an. Wie kommt den die "Exe-Datei" in den Speicher bzw. warum?

    Das einfachste und sicherste ist eine richtige Datei anzulegen und diese ganz normal auszuführen. Alles andere wäre extreme bastelei.



  • Paul P. schrieb:

    das hört sich seltsam an. Wie kommt den die "Exe-Datei" in den Speicher bzw. warum?

    Damit der Vierenschützer nichts bemerkt.



  • Damit der Vierenschützer nichts bemerkt.

    Das könnte man aber doch viel einfacher haben...



  • Klar geht das Windows macht ja auch nichts anderes. Wo das Image nun herkommt, ob von der Festplatte direkt als Datei oder ob es vorher in einer anderen Datei steckt ist egal. Da aber Windows das Starten einer "verpackten" Datei nicht unterstützt, wirst du dir deinen eigenen Loader schreiben müssen. Dazu sind Kenntnisse über das PE-Dateiformat notwendig, über das Speichermanagement von Windows und was noch so alles intern passiert. Da du aber anscheinen keine Ahnung hast, wie komplex dein Vorhaben ist, kann ich jetzt schon sagen, dass du das alleine nie schaffen wirst. Und ohne die grundlegensten Win API Grundlagen wird das auch mit Hilfe kaum was werden.

    Aber noch mal die Frage, wozu soll das gut sein?





  • Bitte nein. Aus dem Virenalter bin ich lange raus. Es geht um folgendes: Ich will die Exe-Datei komplett verschlüsseln. Die Verschlüsselung ist für mein Problem unwichtig (vorerst), aber zum Testen reicht erst einmal eine einfache Ceasar Verschlüsselung aus. Nun habe ich also die Datei verschlüsselt lokal auf der Festplatte vorliegen. Meine Idee war es nun die Datei einzulesen, die vorliegenden Bytes wieder zu entschlüsseln und die entschlüsselte Exe, ohne sie vorher wieder abzuspeichern, direkt auszuführen. Wenn ich aber den Link meines Vorposters (danke dafür) heranziehe, habe ich bedenken, ob ich das schaffe umzusetzen.



  • Warum nicht einfach speichern ausführen und dann wieder löschen?



  • Weil der ganze Aufwand mit dem Verschlüsseln dann für die Katz war, wenn die Exe dann wieder im "klartext" temporär auf der Festplatte vorliegt. Nicht sehr sicher denke ich. Sicherer wäre es dann immer noch die Exe nur im Speicher eines anderen Prozesses zu belassen und es von dort zu starten. Aber gut, ich habe eingesehen, dass dies nicht so einfach umzusetzen ist. Ich werde mir wohl etwas anderes einfallen lassen müssen 🙂



  • Einer der hier im Forum ist hat sowas mal programmiert. Ich erinnere mich leider nicht mehr an die URL. Irgendwas mit *dev*.de

    Vielleicht erinnert sich jemand dran...war noch nicht alzu lange her als er den Link hierein gestellt hat.



  • Ah, habs schon gefunden. Hab mich aber vertan, ist "nur" zum Laden von DLLs aus dem Speicher.

    http://www.devfull.de/?page_id=8


Anmelden zum Antworten