EXE-Datei starten

Hallo,
ich habe ein Programm geschrieben, das eine EXE-Datei von einer eingebetteten Ressource lädt und in ein Byte-Array speichert. Nun möchte ich die Anwendung starten kennt wer eine Funktion? Dabei möchte ich nicht, dass ich die EXE-Datei temporär speichere.
Ich verwende zwar zurzeit die Funktion Assembly.Load, um die Anwendung zu starten. Leider funkioniert diese Funkion nur bei wenigen Anwendungen, da nur Assembly-Files unterstützt werden.

Programmieresprache: C#

mfg Thomas Humer
 
Hm du könntest den %eip manipulieren oder per Assemblerbefehl in den Code der Exe-Datei springen.
Ist meiner Meinung nach aber beides nicht gerade schön und vorallem sehr gefährlich, wenn du dich nicht damit auskennst.
 
ist eine gute Idee, doch kann man aber überhaupt einen asm-Code in C# einbinden? Und lässt es Windows überhaupt zu, den eip zu ändern?
 
nd lässt es Windows überhaupt zu, den eip zu ändern
weder windows noch die CPU ;) - zumindest nicht direkt. Indirekt aber schon:
Code:
mov eax,1234h
jmp eax
Man kann eine Win32-Anwendung auch aus dem Speicher starten - nur hat man dann sehr viel Spass :rolleyes:
Sprich: Du musst dann, je nach dem was Du machen willst, den kompletten PE-Loader von Windows nachbauen: also z.B die Exe richtig in den Speicher mappen - die ganzen Sectionen entsprechend ihrer virtuellen Adressierungen. Wichtiger ist aber die Import Adress Tabelle, in der man alle Windows(und nichtwindwos) Funktionen, die die Applikation imporitert, richtig auflösen muss. Außerdem will eine Anwendung unbediengt ihre "vorgelinkte" Imagebase haben und da gibts noch ein Haufen Sachen die mir im Moment nicht einfallen ;), die aber mit unterschiedlichen Compilern/Linker Eigenheiten zusammenhängen müssten.

Nicht destotrotz:
Ein gutes Tutorial findet man hier:
http://spiff.tripnet.se/~iczelion/tutorials.html
(Pe Tutorials)
Viel Spass dabei ;)
 
Zurück
Oben