Представим себе, что распаковщик уже отработал, мы стоим в оригинальной точке входа (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).