[C#] .exe-Datei ausführen ohne sie zu erstellen

RELAX

Grünschnabel
Hallo Community,
ich hatte ein wenig Probleme den Titel vom Thema zu wählen.
Also hier genaueres:

Also ich habe (als beispiel) eine "test.exe" die ich nicht selber geschrieben habe.
Sie erstellt einen Hardware-Key(ist aber nebensächlich).
Mit wen man ein Startargument übergibt speichert die "test.exe" eine
Textdatei mit den Informationen ab.

Zurzeit erstellt mein Porgramm die test.exe erst in %APPDATA%,
führst sie dann aus und löscht sie.

Könnte man eine .exe (oder auch .dll) so starten/ins Programm einfügen
das kein neuer Prozess erstellt wird und kein Exe-Dropper benötigt wird?

MFG RELAX

PS: Falls ich falsch/schlecht gesucht habe und es schon so einen beitrag gibt (auch gerne in C/C++)
bitte einfach link posten :) THX
 

sheel

I love Asm
Hi

das geht nicht.
Könntest höchstens Temp als Zielordner nehmen, statt einen mit sinnvollem Inhalt.

C++ ist übrigens gar nicht das Gleiche wie C#.
 

RELAX

Grünschnabel
Nein aber wen es in C/C++ funktionieren würde könnte ich das Programm auch in C schreiben.
Ich habe C# nur aus Bequemlichkeit gewählt das es nur ein Test sein soll.
 

Muepe32

Erfahrenes Mitglied
Diese Möglichkeit gibt es grundsätzlich schon, sie ist aber nicht wirklich orthodox und es gibt keine Garantie, dass sie auf zukünftigen Versionen von Windows noch funktionieren wird. Diese sieht so aus, dass du die Datei in den Speicher lädst und die nötigen Aktionen (relocations, imports, exports, etc) durchführst und dann den Einsprungpunkt aufrufst. Das nennt sich auch manual mapping. Wie erwähnt, dies beruht auf "Interna" des Betriebssystems und ist nicht Teil der normalen API, daher schreckt Microsoft da theoretisch auch nicht zurück Sachen nach belieben zu ändern (was in der REalität aber selten geschieht).