![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
denks |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Здравствуйте. Вот задался таким вопросом. Как загрузить файл в память и потом запустить его из памяти ? Допустим есть на диске файл 1.exe. Как можно загрузить его образ в память и запустить ?
Или можно рассмотреть вариант, когда файл находится в рерурсах другого exe, а не на диске. Подскажите пожалуйста. Заранее спасибо. |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
|
|||
|
||||
denks |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Скомпилировал в ресурс программу выводящую сообщение с помощью brcc32.exe. Исходный код который вы привели скомпилировался без проблем. Но при запуске полученного файла, ничего не происходит, а процесс cmd.exe просто висит в памяти. Подскажите,пожалуйста, в чём проблема. Заранее спасибо.
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
denks, На самом деле название программы сохранится поскольку в системе она уже зарегистрирована как cmd.exe, а программа у вас не запустилась вероятно из-за того, что вы либо забыли прикрепить ресурс либо название ресурса отличается от "EXE", попробуйте вообще для начала не грузить из ресурса, а загрузите из файла.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
denks |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Уже разобрался. Всем большое спасибо.
|
|||
|
||||
denks |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Тема на форуме уже неоднократно поднималась. Но я всё же хотел спросить. Пример который привели работает. Но он ,я считаю, не подходит для нормального паковщика или протектора файлов. Из-за того что, например, Kaspersky Internet Security 6.0 обнаружает эту программа как вирус по причине WriteProcessMemory. Я нашёл некоторую информацию по данной теме. http://www.codeproject.com/useritems/LoadExeIntoAssembly.asp
Там прилагается пример. Помогите пожалуйста перевести пример на delphi. Я думаю разбор этой темы будет полезен многим. Спасибо. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
а зачем "нормальному паковщику или протектору" запускать exe в памяти?!
![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
dumb, как зачем! чтобы сэкономить время. Распоковку быстрее производить в память, а не на диск, с последующим запуском, кроме того, если програма была сохранена на диск, то ее можно оттуда востановить, что крайне не желательно, особенно для AsProtect, который не тлько пакует но и защищает код програмы!
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
denks, перевести весь пример - очень долго можно только главную процедуру, а вот ее я не могу найти
![]() Добавлено @ 17:37 код нашел ![]()
Но здесь работают функции платформы .NET
и т.д. Это мало интересно, вобще это можно будет перевести только на Delphi .NET, а это уже в другой раздел... -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
denks |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Возможно я привёл неудачную ссылку. Ну а кто-нибудь может что-нибудь подсказать или посоветовать по данной теме ?
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
denks, просмотрел google и yandex - единственная идея это изучить исходники UPX, которые бесплатно предоставляются на сайте программы. Все остальное только теория ничего реального.
ASPack - делался кстати на базе вируса - удивительно как Каспер на него не ругается ![]() p.s. На изучение UPX уйдет много времени, так что быстрых результатов не ждите. Вот еще ссылки на тему протектора http://www.codeproject.com/cpp/peprotector1.asp http://www.codeproject.com/system/inject2exe.asp http://www.codeproject.com/useritems/inject2it.asp http://www.codeproject.com/tools/opensrcprot_part2.asp Это сообщение отредактировал(а) alexeis1 - 6.7.2006, 13:44 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
все вышеперечисленные протекторы и упаковщики не запускают никаких "exe в памяти". код распаковщика является частью уже запущенного процесса получающий управление при старте. все, что нужно ему сделать - распаковать код/данные и передать управление на OEP (original entry point).
направление выбрано правильное - изучать мат.часть (upx src итд) ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Но перед передачей управлния можно создать копию своего приложения и передать ему все параметры. Т.о. "упаковщик" запустит сам себя и в результате получится что как будто произошел запуск из памяти, при этом, конечно, вторая копия будет иметь уже другие дескрипторы, что с одной стороны может создать проблемы, с другой стороны если это использовать для целей защиты програмы от дебагера - то очень удачный вариант. Наверное следует уточнить цели такого запуска из памяти ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
denks |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
В целях написания пакера/криптора исполняемых файлов.
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
denks, тогда существование обоих exe одновременно совсем не нужно. Значит ссылочки в самый раз
![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |