Объединение двух исполняемых файлов
Возможно ли объединить два exe-файла?
Мне нужно, чтобы это работало так:
- Пользователь работает
combined.exe
(комбинация из 2 exe-файлов). - Когда первый исполняемый файл загружен, и пользователь нажал "Пуск" (я получил исходный код), тогда будет запущен второй исполняемый файл.
Это вообще возможно?
4 ответа
В мире вредоносных программ люди часто используют связующие.exe для объединения двух, а иногда шифруют конечный результат, чтобы предотвратить обнаружение, поэтому вы можете обнаружить, что большая часть программного обеспечения, доступного для этого, приведет к тому, что ваше приложение будет помечено как вредоносное ПО.
Пример программного обеспечения, предназначенного для вредоносных целей: File Joiner
Однако, если вы пропустите заглушку шифрования, вы можете обнаружить, что она не помечена, просто загрузите ее на virustotal.com и проверьте результаты. Я бы сделал это независимо от того, какое решение вы выберете.
Добавьте второй EXE-файл в качестве ресурса в программу-оболочку. Затем, когда вам нужно запустить его, вы можете извлечь его во временный каталог и запустить его.
(Я полагаю, что когда я получил [sic] исходный код, вы имеете в виду код AutoIt?) Я сделал только быструю проверку, но я думаю, что AutoIt (или, по крайней мере, компилятор) поддерживает добавление и извлечение ресурсов, и он должен поддерживать использование Windows API. Что касается защиты EXE-файла, на самом деле вы мало что можете сделать, если не использовать надежное шифрование, но вы можете заблокировать файл и закрыть его с помощью флага FILE_FLAG_DELETE_ON_CLOSE, установленного для его автоматического удаления.
Это немного отличается от вашего примера, но это как объединить.exe с помощью AutoHotkey: скомпилируйте следующий скрипт с First.exe
а также Second.exe
в той же папке. После компиляции вам нужно только сохранить единственную обертку.exe.
FileCreateDir, tmp
FileInstall, First.exe, tmp\First.exe
FileInstall, Second.exe, tmp\Second.exe
RunWait, tmp\First.exe
MsgBox, 4, , Run Second.exe?
IfMsgBox, Yes
RunWait, tmp\Second.exe
FileRemoveDir, tmp, 1
ExitApp
Вы должны посмотреть на EXE-протекторы, если вы не хотите, чтобы пользователи копались в вашем коде. Трудно динамически запустить новый процесс без какого-либо незавершенного EXE-файла, и я бы даже не пытался писать EXE-сегменты из AutoIt. (На самом деле, я смог выполнить части сборки из AutoIt, но в Vista+ Data Execution Prevention обычно это убивает.)