Объединить два exe-файла в один программно

есть ли способ объединить два exe-файла в один, программно, так что запуск его будет выполнять оба старых exe-файлов вместе. Я нашел некоторые вещи в google о инъекции кода или dll-файлов, но возможно ли два объединить два exe-файла или ввести exe в exe?

спасибо заранее.

[EDIT] Поблагодарить каждого. Только для тех, кто сказал, что это невозможно, я должен сказать, что я почти сделал это в конце концов так, как некоторые предлагали. Это почти идет так (я не могу вспомнить все это, потому что это было давно):

[осторожно: этот алгоритм очень похож на некоторые черви и вирусы. Я не хакер и не вирусолог! и это должно использоваться только по экспериментальным или небезопасным причинам - ошибки в коде могут разрушить исполняемые файлы в каталогах.]

1-Exe проверяет размер себя, чтобы определить, было ли что-либо добавлено к себе. если нет, то:

     1.1- The exe finds other executable files in its directory (lets call one of them as victim!)
     1.2- it makes a copy of itself (lets call it newMe)
     1.3- it copies the other executable found in the directory to the end of newMe.
     1.4- it deletes the other executable file found and renames newMe to its victim's name.

2 - Если exe обнаруживает, что что-то было добавлено к нему:

     2.1- Then it copies data from itself (from ORIGINAL_FILE_SIZE to the end of file) to a new file (lets call it newBorn.exe)
     2.2- It runs itself's code and then executes the newBorn.

Я сказал, что почти сделал это, потому что таким образом exe добавляет к себе другой exe. но это может быть повторено для добавления и выполнения 2 или даже 3 или более исполняемых файлов в один. вы просто должны знать ORIGINAL_FILE_SIZE написанной программы.

8 ответов


теоретически это возможно, но это потребует некоторых усилий с вашей стороны.

вы можете добавлять данные в exe-файл, так работают самораспаковывающиеся архивы. Однако вам понадобится собственный формат данных, похожий на файловую систему, потому что у вас есть только одна квартира .файл EXE.
См. эту статью Microsoft (в google есть намного больше)http://support.microsoft.com/?scid=kb%3Ben-us%3B84062&x=12&y=13

exe вы упаковываете свои два файла затем необходимо извлечь эти файлы и, наконец, запустить их.

удачи.


нет, лучше всего создать .летучая мышь!--4--> файл (Windows), который запускает оба исполняемых файла.

@echo off
c:\path\to\first\exe\file1.exe
c:\path\to\second\exe\file2.exe

вы также можете создать shell script в Linux делать то же самое

#!/bin/sh
/path/to/first/exe/file1
/path/to/second/exe/file2

Примечание, это будет выполняться file1 перед file2.


вы можете создать свой собственный EXE-файл, который содержит два других EXE-файла в качестве встроенных ресурсов и извлекает и выполняет каждый из них.

остерегайтесь, что EXE, который вы вставляете, может не работать, если вы извлекаете его в другой каталог.


технически можно встроить некоторые другие файлы exes в ваш exe, некоторые упаковщики, такие как upx, делают это. Так что вы должны быть в состоянии сделать то же самое с 2 бывшими.

в unix, как мода ваш exe может вилка, то первый процесс выполнить первый старый исполняемый файл, и новый процесс выполнить второй exe, возможно, установка трубы между ними раньше.

но это явно не так легко сделать, и очень вероятно, бесполезный перебор для ваших нужд. Вы наверное, просто нужно немного .летучая мышь или .ш


Я заметил ваш" программно " классификатор, но на всякий случай вне кода решение приемлемо для того, что вы делаете...

IExpress может создать EXE, который выполняет два других EXEs. Вы можете создать пакет IExpress из командной строки.

СЕГ файл:

[версии]
Class=IEXPRESS
SEDVersion=3
[Варианты]
PackagePurpose=InstallApp
ShowInstallProgramWindow=1
HideExtractAnimation=1
UseLongFileName=0
InsideCompressed=0
CAB_FixedSize=0
CAB_ResvCodeSigning=0
RebootMode=N
InstallPrompt=%InstallPrompt%
DisplayLicense=%DisplayLicense%
FinishMessage=%FinishMessage%
Выражение Targetname=%Выражение Targetname%
Friendlyname Используется=%Friendlyname Используется%
AppLaunched=%AppLaunched%
PostInstallCmd=%PostInstallCmd%
AdminQuietInstCmd=%AdminQuietInstCmd%
UserQuietInstCmd=%UserQuietInstCmd%
SourceFiles=SourceFiles
[Strings]
InstallPrompt=
DisplayLicense=
FinishMessage=
TargetName=C:\combined.exe
FriendlyName=Пример Названия
AppLaunched=выполнить.летучая мышь!--12--> PostInstallCmd=
AdminQuietInstCmd=
UserQuietInstCmd=
FILE0= " FirstProgram.EXE-файл"
FILE1= " SecondProgram.EXE-файл"
FILE2= " выполнить.летучая мышь"
[SourceFiles]
SourceFiles0=C:\programs\
[SourceFiles0]
%FILE0%=
%ФАЙЛ1%=
%ФАЙЛ2%=

run.bat-файла:

FIRSTP~1.EXE
Второй~1.EXE

когда вы работаете в сочетании.exe, firstProgram.exe и выполнить. Когда он закончил, secondProgram.exe и выполнить. Если вы хотите firstProgram.exe и secondProgram.exe для запуска одновременно это может быть сделано с изменением файла BAT.


копировать данные из 1 файла в третий Запомните положение eof. Добавить двоичный файл из второго файла в третий. Затем добавьте в конце число (int) значения eof. В первом файле должен быть код, который может копировать весь файл из этого значения в конец файла в другой файл.

и выполнить.

Это простой способ сделать это.


Так я написал свой вирус на c++ Система ("тип вируса.exe > > not_virus.исполняемый") но если вы делаете это через командную строку, просто сделайте это. Тип вируса.exe > > not_virus.исполняемый Но я с нетерпением жду, как я могу добавить его, а не добавлять, попросив его сначала перейти к первой строке, а затем скопировать его код в исполняемый файл жертвы


нет невозможно "впрыснуть" один exe в другой. Это действие даже не определено, поскольку у вас нет контроля над внутренними процессами выполнения, которые вы делаете, когда вводите объекты друг в друга.

самое близкое, что возможно с exe-файлами, - это трубопровод, где вы можете перенаправить вывод одного exe-файла на вход другого:

one.exe | two.exe