Запуск *.exe-файла из ресурса
Возможно ли добавив *.exe файл в ресурс, затем запустить его из ресурса? Если возможно, напишите пожалуйста, как это можно реализовать. :)
Возможно, но для этого все равно сначала надо будет достать файл из ресурсов и сохранить на диске, а потом уже запустить.
Теоретически, реализовавши функционал загрузчика, можно и напрямую в память грузить :)
Только если создать виртуальное устройство (виртуальный диск), на котором разместишь файл.
Только для этого потребуются права администратора для установки твоего драйвера, а файл драйвера тоже надо создать на диске.
Ну хорошо, тогда можно ли запустить *.exe и затем перекрыть к нему доступ (например, чтобы пользователь не смог его скопировать или запустить)?
Ище и как получиться!
Кроче, етот пример, хоть и на VisualBasic, показывает как создать процес с одной программы, а потом заменить ее память на содержимое(!) другой прогаммы.
Теоритически можно запихнуть программу в ресурс, и при потребе вынимать ее как последовательность байт и запускать (для запуска требуеться не адрес программы на диске, а только ее битовый образ, и программу от имени которой она будет запускаться. Т.е. в таск менеджере будет отображаться имя первой програмы, а насамом деле процес будет пренадлежать второй программе.)
Я пробывал зашыть программу в ресурс - получилось. А вот при извлечении, функцыя возвращает на 13 байт больше (пришывает их перед телом прораммы) чем размер программы! Я нинешел причины етой непонятной проблемы и даю пример как он есть
WARNING!!!
ПРЕЖДЕ ЧЕМ ЗАПУСКАТЬ ПРИМЕР - СОХРАНИТЕ ВСЕ НЕСОХРАНЕННЫЕ ДАННЫЕ: НА НЕКОТОРЫХ КОМПЮТЕРАХ ПОСЛЕДСТВИЯ ВЫПОЛНЕНИЯ ЕТОГО ПРИМЕРА МОГУТ БЫТЬ НЕПРЕДСКАЗУЕМЫ!
Что же касается твоего примера, то есть более элегантные решения, например, тот же upx или yoda и пр. exe-упаковщики, которые разворачивают упакованные секции непосредственно в памяти и передают им управление.
НО на диске всегда есть файл, с которого инициализируется процесс.
Ну дык а я об чем?
Алгоритм работы UPX примерно следующий:
1. Секции EXE шифруются и переименовываются.
2. К файлу дописывается дешифровщик.
3. При запуске файла первым запускается дешифровщик и восстанавливает данные, далее передает управление на реальную точку входа.
Там есь множество нюансов.