# Exe files in neue exe einbinden



## cycovery (18. September 2008)

Hi!

Ich habe drei exe files und ich möchte die so in ein neues exe file packen, dass je nachdem was für einen startparameter ich dem neuen exe mitgebe, eines der gepackten exe gestartet wird.

Programmiersprache und IDE ist eigentlich ziemlich beliebig. Oder vielleicht kennt jemand ein tool, mit dem das machbar ist?

Danke für jegliche Tips.


----------



## PoebelundGesocks (18. September 2008)

SuFu...
C++ System(), CreateProcess() <- anschaun. danke.


----------



## cycovery (18. September 2008)

Danke erstmal für die Hilfe!
Damit starte ich aber externe Programme. ich möchte am Schluss nur noch eine einzige exe Datei haben . . .


----------



## engelmarkus (18. September 2008)

Man kann doch über Resourcenskripte auch Bilder und Sounds einbinden. Das sollte doch zumindest unter Windows mit jedem Dateitypen gehen?
Dann müsstest du die Datei halt aus der Resource extrahieren, auf die Platte schreiben und dann starten.


----------



## cycovery (18. September 2008)

Wenn ich die auf die Platte schreibe krieg ich aber Probleme falls das Programm nicht ordnungsgemäss beendet, denn die bleibt dann dort. Falls ich sie so als ressource einbinde, könnte ich sie dann auch starten ohne sie zuerst irgendwohin zu schreiben?

Thx!


----------



## PoebelundGesocks (18. September 2008)

könnte theoretisch möglich sein wenn du dir ne ramdisk erstellst und sie darauf entpackst. Aber letztendlich ist n externer aufruf und irgendeine form des entpackens meines wissens nach nicht zu vermeiden. In deinem beispiel sinds nunmal externe programme und keine Funktionen die du einfach einbinden kannst und mitcompilieren.
Die Ramdisk könnte aber auch als Leiche im speicher liegen wenn das pgm nicht korrekt terminiert - wäre allerdings bei reboot weg. Was du dir allerdings auch überlegen könntest ist über die Registry (Windoof) n Eintrag in HKLM unter "RunOnce" (HKLM -> Software/Microsoft/Windows/CurrentVersion/RunOnce )  wenn du weißt wohin du die Datei(en) entpackst (was wohl der Fall ist  ) und n del reinlegen. 
Damit wäre (auch spätestens bei reboot) das problem behoben und alle leichen sind beseitigt. Nichtsdestotrotz - auch keine schöne Lösung.


----------



## cycovery (18. September 2008)

Aber das muss doch auch einfacher gehen...

Wenn ich z.b. einen setup creator benutze, dann packt der doch auch exe und weitere setup files in ein setup.exe und kann die dann während der installation aufrufen. Oder die ganzen Exe-Binders die Trojaner an andere ausführbare Dateien hängen machen das doch auch (ohne den trojaner zuerst entpacken zu müssen).

Dann sollte das doch irgendwie möglich sein?


Eine Exe unterscheidet sich von einer DLL doch nicht sehr stark. es fehlt einfach die functiontable.. DLL's lassen sich statisch linken.. irgendwie müsste ich die exe doch in mein Programm einlinken können um einfach die main() funktion der eingelinkten exe aufzurufen . . .


----------



## engelmarkus (18. September 2008)

So ein Setup ist normalerweise immer ein selbstextrahierendes Archiv, wie du es mit Winzip, Winrar oder auch 7-zip erzeugen kannst. Das funktioniert letztendlich auch so, dass vorne ein Programm dran ist, das die Daten, die hinten an der Exe-Datei dranhängen, auf die Platte schreibt. Erst dann startet es ein beim Packen angegebenes Programm.
Ich glaube nicht, dass man einfach so eine Exe-Datei in den Speicher laden und ausführen kann. Ist nicht, um sowas zu verhindern, DEP da?


----------



## PoebelundGesocks (19. September 2008)

cycovery hat gesagt.:


> Aber das muss doch auch einfacher gehen...
> 
> Wenn ich z.b. einen setup creator benutze, dann packt der doch auch exe und weitere setup files in ein setup.exe und kann die dann während der installation aufrufen. Oder die ganzen Exe-Binders die Trojaner an andere ausführbare Dateien hängen machen das doch auch (ohne den trojaner zuerst entpacken zu müssen).
> 
> ...


Ähem? Exe unterscheidet sich sogar massiv von DLLs, DLLs bieten dir einsprungspunkte zu funktionen, ansonsten müsste jede DLL auch alleine lauffähig sein - sind sie aber nicht. 
DLLs die dir Funktionen liefern - Exe sind lauffähige programme - in denen es zwar funktionen gibt, die von aussen aber erstmal nicht bekannt sind, die nicht zur verfügung gestellt werden etc. Bei den meisten EXE sind die einzigen möglichkeiten die du hast: Anstossen, abwarten, eventuelle rückgabe/status auswerten. 

Setup: siehe den kerl über mir.
<Anmerkung: Die meisten setups entpacken in nen temporären ordner der aus ner menge  besteht (xc1230005kj93885876...) such doch mal nach sowas  ich schätz in deinem Temp Verzeichnis wirste dahingehend fündig.  Einfachster weg das zu zeigen... installier WinZip, 7zip, o.ä. rechtsklick auf dein setup und du wirst die option "entpacken" sehen. Falls du keine setups zur hand haben solltest - lad dir das MS dotnet FW runter, die redistributables sind genau solche files>

Exe Binder - damit hab ich mich zu wenig beschäftigt um dir auskunft zu geben. Aber ich vermute auch damit wirst du keinen erfolg ham, weil deine exe einfach ne weitere "exe" anstösst die angehängt ist, was dir nichts bringt wenn du an bestimmten stellen zwischen A, B und C <...> interagieren willst. Aber hier lass ich mich gern berichtigen. 

MfG Dave


----------



## sheel (19. September 2008)

Wenn du eine so was starten willst, wirst du wohl nicht anders können und das selber in den ram laden etc... da gibts viel zu tun.
mit createprocess wird das nicht gut gehn


----------



## PoebelundGesocks (19. September 2008)

sheel hat gesagt.:


> Wenn du eine so was starten willst, wirst du wohl nicht anders können und das selber in den ram laden etc... da gibts viel zu tun.
> mit createprocess wird das nicht gut gehn



Könntest du den Satz nochmal auf Deutsch verfassen, vllt lern ich dann ja auch noch was ...


----------



## engelmarkus (19. September 2008)

Notfalls kannst du dir ein eigenes kleines Setup basteln. Einfach über Start->Ausführen: "iexpress"


----------

