Техника снятия дампа с защищенных приложений

             

Простые случаи дампинга


Представим себе, что распаковщик уже отработал, мы стоим в оригинальной точке входа (OEP) и готовы сохранить образ файла (file image) на диск, то есть сбросить дамп. Отладчик soft-ice не предоставляет такой возможности, поэтому приходится действовать обходным путем.. Но для начала необходимо выяснить от "сих" и до "сих" сохранять. При условии, что защита не предпринимает никаких враждебных действий, нужная информация может быть добыта командами "MOD"

и "MAP32" (см.рис. 1 и листинг 1).

Рисунок 1 определение региона памяти для снятия дампа

:MOD   test_dump     # определяем базовый адрес загрузки модуля в память

hMod Base     PEHeader      Module Name   File Name

00400000      004000D0      test_dum      \TEMP\test_dump.exe

:MAP32 test_dump     # смотрим на карту модуля в памяти

Owner         Obj Name      Obj#   Address              Size          Type

test_dump     .text         0001   001B:00401000 00003B46      CODE  RO

test_dump     .rdata        0002   0023:00405000 0000080E      IDATA RO

test_dump     .data         0003   0023:00406000 00001DE8      IDATA RW

Листинг 1 определение дислокации модуля в памяти, здесь "test_dump" — имя процесса, с которого мы собираемся снять дамп (soft-ice отображает его в правом нижнем углу)

Базовый адрес загрузки (hMod base) располагается по адресу 400000h. Последняя секция (".data") начинается с адреса 406000h и продолжается вплоть до адреса (406000h+1DE8h) == 407DE8h. Таким образом, нам необходимо сохранить 7DE8h байт памяти, начиная с 400000h. Но в soft-ice такой команды нет! Зато есть "история команд". Даем команду "DB 400000 L 7DE8", выходим из отладчика, запускаем "symbol loader" и говорим "file à save soft-ice history as" (при этом размер самой истории должен быть предварительно увеличен хотя бы до 30 МБайт: edit à soft-ice initialization setting à history buffer size).


Содержание  Назад  Вперед