Etwas aus dem Speicher ausführen? Nun da gibt es schon gewisse Probleme. Wenn das eine normale .exe sein soll, musst du das tun, was auch ein Starten aus dem System heraus machen würde: einen Prozess erzeugen, Umgebungsvariablen bereitstellen und dann die main() des Programmes ausführen. Man muss also irgendwie den Code direkt im
ram vorliegen haben (oder eben nur den Einsprungpunkt für die main() finden). Am einfachsten müsste das mit einem prozeduralen Aufruf funktionieren, dazu erstellst du eine Variable eines prozeduralen Typs, setzt diesem die richtige Adresse ( Stream.Memory + Offset ) und rufst das ganze auf
( oder mit Assembler
PUSH EAX
MOV EAX, <address>
CALL EAX
POP EAX )
Bei 64bit-Systemen gibt es meines Wissens nach das NX-Flag "no execute", welches Codeausführung im Variablenspeicher verbietet, da musst du dann wirklich eine
dll mitspeichern, aus dem Stream extrahieren, auf die Platte speichern und mit LoadLibrary zugänglich machen. Viel Spaß