it-roy-ru.com

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

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

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

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

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

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 написанной программы.

14
Auxiliary

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

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

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

Удачи.

5
svens

Нет, лучше всего создать файл . Bat (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.

5
Robert Greiner

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

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

5
SLaks

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

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

SED-файл:

[Версия]
Класс = 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%
Имя_целевого_объект =% Имя_целевого_объект%
FriendlyName =% FriendlyName%
AppLaunched =% AppLaunched%
PostInstallCmd =% PostInstallCmd%
AdminQuietInstCmd =% AdminQuietInstCmd%
UserQuietInstCmd =% UserQuietInstCmd%
= Файлы исходного кода файлы исходного кода
[Строка]
InstallPrompt =
DisplayLicense =
FinishMessage =
Имя_целевого_объект = C:\combined.exe
FriendlyName = Заголовок примера
AppLaunched = run.bat
PostInstallCmd =
AdminQuietInstCmd =
UserQuietInstCmd =
FILE0 = "FirstProgram.exe"
ФАЙЛ1 = "SecondProgram.exe"
ФАЙЛ2 = "run.bat"
[Файлы исходного кода]
SourceFiles0 = C:\Программы \
[SourceFiles0]
% FILE0% =
% ФАЙЛ1% =
% ФАЙЛ2% =

run.bat file:

FIRSTP ~ 1.EXE
ВТОРОЙ ~ 1.EXE

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

3
lance

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

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

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

3
f4.

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

И выполнить.

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

1
oneat

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

1
ShadowWalker