Объединить два 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