Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать дамп процесса из Delphi... [D5, Win95/98, WinME, WinXP]


Страницы:   1 2

TankMan ©   (2004-02-06 19:01:00) 

Вот проблема такая возникла... кто-нибудь может поделиться информацией?
Мне нужно-то всего - как найти и исправить EP из дельфи, и как останавливать программу на определенном месте (break Point), допустим на самом EP... или чуть дальше... и править байты уже позже...т.е. добиться такого же еффекта как и в LordPE, только не в SI :)...воот... и вобщем непосредственно сам дамп процесса...


Erazzer   (2004-02-09 22:25:00) [21]

Копай в сторону структуры PE-файла (exe, dll, wdm и т.д.).


8ung   (2004-02-09 21:19:00) [22]


> А как сделать полный дамп программы - это самый главный
> вопрос?

Циклическое выполнение ReadProcessMemory.


TankMan   (2004-02-09 20:06:00) [23]

А как сделать полный дамп программы - это самый главный вопрос?


Opuhshii   (2004-02-08 09:12:00) [24]

>break Point
CC - int 3

>EP
указан в заголовке PE файла,..


Игорь Шевченко   (2004-02-08 01:06:00) [25]


> и как останавливать программу на определенном месте (break
> Point), допустим на самом EP


Любым отладчиком. С сайта Borland можно скачать td32


TankMan   (2004-02-08 01:03:00) [26]

Уж не знаю что такое "ВАП" :)... а
EP это - Entry Point, т.е. точка входа в программу.
LordPe - это программа, которая может "остановить" выбранную программу на точке в хода для SoftIce-а...
Вот...
А так вобщем вопрос один возниает ReadProcessMemory - это функция чтения памяти процесса (как видно из названия :) ) но у нее есть следующие "проблемные" для меня параметры - это куда, всетаки копировать таКОЙ объем, и еще то - каКОЙ именно объем... т.е. где узнать, начиная с какого адресса и сколько байт нужно читать?


Digitman   (2004-02-07 12:08:00) [27]


> исправить EP


>  и в LordPE, только не в SI


уж не знаю что такое EP, LordPE, SI, но дамп ВАП произвольного Win32+процесса реализуется с помощью связки ф-ций OpenProcess + AjustTokenPrivelegies + VirtualQueryEx + VirtualprotectEx + ReadProcessMemory


AKul   (2004-01-23 13:18:00) [28]


> TankMan ©   (11.02.04 17:31) [17]
> Мне нужен вариант 2...

Судя по описанию, которое идет за этой фразой - Вам нужен все-таки вариант 1 (Вам не нужно сохранять стеки, образы всех загруженных DLL).

Для Вашей задачи (преобразование дампа в эекзешник) простым дампом процесса не обойтись.

Допустим, если Вы не хотите пользоваться функцией VirtualQueryEx, то Вы можете просто считать функцией ReadProcessMemory начиная с ImageBase (а для экзешника оно обычно0x400000) определенное количество байт (сами подберете длину этого блока).

Но вот восстановить заголок exe-файла - проблема, так как пакеры, криптеры всю "ненужную" информацию удаляют из него. Так же придется восстановливать импорт.

Лучше будет изучить алгоритм этого пакера/криптера и по его алгоритму восстанавлить оригинал.


> дело в том, что программа при запуске чуть-чуть изменяет
> свой код

Если все же программа только чуть-чуть изменяет свой код, не перемещает его и т.п. (что-то с трудом верится в это!), то заголовок exe-файла у Вас есть (берите не из дампа, а из запущенного файла) и размещение секций файла в памяти Вы знаете на 100% (ну, или узнаете, прочитав документацию по структуре PE-файла). Останавливайте программу где нужно (Вы писали, что знаете где), находите секцию кода и сохраняйте ее из памяти в оригинальный экзешник вместо существующей.
Если Relocation Table применялась (очень маловероятно для екзешника, только если он имел какой-нибудь "странный" ImageBase), то придется восстановить все абсолютные переходы и ссылки на адреса памяти (это не проблема).
Меняйте точку входа в заголовке файла на требуемую.
... и запускайте, наслаждаясь своим творением!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо