Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запуск *.exe-файла из ресурса

4.3K
18 июля 2006 года
valeriy15
84 / / 03.04.2006
Возможно ли добавив *.exe файл в ресурс, затем запустить его из ресурса? Если возможно, напишите пожалуйста, как это можно реализовать. :)
3
18 июля 2006 года
Green
4.8K / / 20.01.2000
Возможно, но для этого все равно сначала надо будет достать файл из ресурсов и сохранить на диске, а потом уже запустить.
398
19 июля 2006 года
Alexandoros
630 / / 21.10.2005
Теоретически, реализовавши функционал загрузчика, можно и напрямую в память грузить :)
3
19 июля 2006 года
Green
4.8K / / 20.01.2000
Нельзя. Не получится создать процесс.
Только если создать виртуальное устройство (виртуальный диск), на котором разместишь файл.
Только для этого потребуются права администратора для установки твоего драйвера, а файл драйвера тоже надо создать на диске.
4.3K
19 июля 2006 года
valeriy15
84 / / 03.04.2006
Ну хорошо, тогда можно ли запустить *.exe и затем перекрыть к нему доступ (например, чтобы пользователь не смог его скопировать или запустить)?
282
19 июля 2006 года
Bard
481 / / 26.02.2006
[QUOTE=Green]Нельзя. Не получится создать процесс...[/QUOTE]

Ище и как получиться!
Кроче, етот пример, хоть и на VisualBasic, показывает как создать процес с одной программы, а потом заменить ее память на содержимое(!) другой прогаммы.

Теоритически можно запихнуть программу в ресурс, и при потребе вынимать ее как последовательность байт и запускать (для запуска требуеться не адрес программы на диске, а только ее битовый образ, и программу от имени которой она будет запускаться. Т.е. в таск менеджере будет отображаться имя первой програмы, а насамом деле процес будет пренадлежать второй программе.)

Я пробывал зашыть программу в ресурс - получилось. А вот при извлечении, функцыя возвращает на 13 байт больше (пришывает их перед телом прораммы) чем размер программы! Я нинешел причины етой непонятной проблемы и даю пример как он есть

WARNING!!!

ПРЕЖДЕ ЧЕМ ЗАПУСКАТЬ ПРИМЕР - СОХРАНИТЕ ВСЕ НЕСОХРАНЕННЫЕ ДАННЫЕ: НА НЕКОТОРЫХ КОМПЮТЕРАХ ПОСЛЕДСТВИЯ ВЫПОЛНЕНИЯ ЕТОГО ПРИМЕРА МОГУТ БЫТЬ НЕПРЕДСКАЗУЕМЫ!
3
19 июля 2006 года
Green
4.8K / / 20.01.2000
Ещё раз повторю: не получится создать процесс не имея файла на диске (физическом или виртуальном).

Что же касается твоего примера, то есть более элегантные решения, например, тот же upx или yoda и пр. exe-упаковщики, которые разворачивают упакованные секции непосредственно в памяти и передают им управление.
НО на диске всегда есть файл, с которого инициализируется процесс.
398
19 июля 2006 года
Alexandoros
630 / / 21.10.2005
[QUOTE=Green] тот же upx [/QUOTE]
Ну дык а я об чем?
3
19 июля 2006 года
Green
4.8K / / 20.01.2000
UPX хранит файл не в ресурсах.
Алгоритм работы UPX примерно следующий:
1. Секции EXE шифруются и переименовываются.
2. К файлу дописывается дешифровщик.
3. При запуске файла первым запускается дешифровщик и восстанавливает данные, далее передает управление на реальную точку входа.

Там есь множество нюансов.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог