Объединение двух исполняемых файлов

Возможно ли объединить два 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 обычно это убивает.)

Другие вопросы по тегам