Памятка по использованию SoftIce
Где и что у приложения загружено в памяти.
1 Команда addr procname - Переводит текущий контекст на нужное приложение.
После этой функции можно смотреть память приложения и устанавливать брэкпоинты. Не всегда память в которой должен появиться код будет заполнена, но брекпоинт установленный на этом участке сработает.
2 map32 procname - Расскажет о секциях приложения и адресах их загрузки.
3 sym partialname* - Возвращает список загруженных символов с адресами
4 hwnd procname - Выводит список окон указанного процесса, потока и т.п. Если не указвать ничего выведет для desktop. Иногда не работает пока не задать addr приложение.
5 mod modname - актуально для 16 битных приложений устананавливает текущий модуль Как привязать информацию о символах к работающему приложению.
1 Для примера возмем MAP файл IDA ""example.map"". Преобразуем его в SYM (при помощи утилиты Util16\Msym.exe) ""example.sym"".
2 В Loader32 Загружаем модуль ""example.sym"".
3 Преобразуем в NMS (Меню\Module\Translate) ""example.nms"".
4 В настройках инициализации (Меню\Edit\SoftIce Initialization...\Symbols) добавляем модуль ""example.nms"".
5 При отладке если необходимо переустанавливаем базовые адреса секций.
Пример: SYMLOC 1 1B 401000 Устанавливает для первой секции базовый адрес 1B:401000
Note - Для опеделения необходимых параметров надо воспользоваться MAP32 (MAP) Брэкпоинты.
1 bpx addr.
Пример:
bpx 1b:407800
2 bpx func.
Пример: bpx CreateFileAbpx MessageBoxAbpx GetWindowTextA
3 bmsg hwnd message.
Пример:
bmsg 01f7 WM_GETWINDOWTEXT
bmsg 01f7 WM_SHOW bmsg 01f7 BM_CLICK
bmsg 01f7 WM_CLOSE
Note - Чтобы узнать хендл окна надо воспользоваться hwnd
4 Условия остановки.
Пример:
bpx 1b:0403600 if ah==3 Прервет программу только если ah будет равно 3
Комментарии
Отправить комментарий