![]() |
|
Модераторы: 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 вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
denks, в первую очередь - усиленно изучать документацию по структуре PE. также неплохо потрейсить в дебуггере запакованный хотя бы UPX'ом .exe'шник. если нет представлений об ассемблере x86, писать протектор - дохлый номер: сниматься будет за две секунды.
|
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 2 Всего: 16 |
Объясни поподробней свою идею, я что-то понять не могу до конца. Перед передачей управления все данные уже распакованы и можно спокойно снимать дамп, что мне помешает снять дамп, если используется твой метод? Да и криптор писать без знаний ассемблера дохлый номер, да даже пакер и тот без знаний ассемблера не напишешь, ну во-первых отладка в любом случае будет происходить в отладчике, а не в IDE среды разработки, а во-вторых и сам распаковщик/дешифровщик будет на ассемблере. Про написание протектора я вообще молчу, даже браться не стоит. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
С дампом конечно беда, ничего не поделаешь -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| BUGOR |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 2 Всего: 16 |
Тогда не пойму где тут очень удачный вариант
|
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |