Отладчик позволяет выдавать дополнительную информацию о выполняемых API-функциях. Чтобы воспользоваться этим, необходимо сделать следующее. В управляющем окне установите флаги: "Enable Documented API Detail", "Stop Auto On API". Далее запустите программу на выполнение клавишей F5. При прохождении API-функции будет производиться остановка и на экране будет появляться окно с информацией о данной функции,
Поиск нужного места в программе. Часто требуется найти в дизассемблированном коде место, соответствующее месту исполняемой программы. Наиболее эффективно это можно сделать следующим образом. Загружаем в отладчик данный модуль. Запускаем его, доходим до нужного места и нажимаем кнопку "Terminate". В результате подсвеченная строка в дизассемблированном коде окажется как раз в нужном месте. Нужно только иметь в виду, что некоторые программы делают изменения, которые потом продолжают действовать. К таковым относятся, в частности, горячие клавиши.
Рис. 4.4.9. Окно модификации регистров и ячеек памяти. Дополнительные возможности для работы с API.
К использованию программы W32Dasm мы еще вернемся в последующих главах.
54 Хотя W32Dasm работает с разного типа модулями, мы рассматриваем только модули формата РЕ.
II
Отладчик SoftIce (версия 4.05) или просто Ice рассчитан для работы в Windows 9x и Windows NT. . Отладчик состоит из собственно отладчика (в английском варианте это "kernel-mode debugger", что можно перевести как "отладчик на уровне ядра"), кроме этого, в пакет SoftIce входит еще символьный загрузчик для загрузки в отладчик исполняемых модулей. Загрузчик позволяет прочитать отладочную информацию для продуктов фирмы Microsoft и Borland.
Итак, что дает отладка при помощи SoftIce?
- символьная и обычная отладка 32-битных приложений;
- отладка драйверов для Windows NT и для Windows 9x, отладка 16-битных приложений для MS DOS и Windows, отладка внутренних программ операционной системы;
- установка обычных точек останова на команду, стоящую по определенному адресу;
- установка точек останова на операции чтения/записи в память, чтения/записи в порты ввода-вывода;
- установка точек останова на сообщения Windows;
- установка условных точек останова, т.е. точек останова, срабатывающих при выполнении определенного условия;
- получение внутренней информации операционной системы;
- возможность использования отладчика на удаленной машине и др.
Отладчик SoftIce имеет разные исполнения для Windows 9x и для Windows NT. В
первом случае он представляет собой VXD
-драйвер и запускается из
autoexec.bat
(программа WINICE.EXE
). В Windows NT он
представляет собой драйвер уровня ядра - NTICE.SYS
.
Начальная установка. Установка пакета достаточно проста. Основной вопрос, который возникает при установке - выбор видеоадаптера и мыши. Что касается видеоадаптера, то обычно рекомендуют выбрать стандартный VGA-адаптер, и с видеосистемой не будет никаких проблем. Отладчик SoftIce предполагает использование мыши для управления. Однако мышь является второстепенным средством управления, и можно обойтись без нее.
После установки и перезапуска Вам, скорее всего, понадобится еще некоторая
настройка файла WINICE.DAT
. Вот основные рекомендации.
- Строка
PHYSMB=32
определяет реальный объем физической памяти в мегабайтах. Укажите реальный объем памяти на Вашем компьютере. - Строка
INIT=
- определяет оконные установки. Лично мне нравятся установки, определяемые строкой:INIT="SET FONT 1; SET ORIGIN 30 30; LINES 65; WIDTH 90; WR; WF; WD 4; WL; WC 30; X;"
. Впрочем, Вы сами сможете подобрать параметры по Вашему вкусу. Но главное заключается в том, что, открыв окно отладчика, можно оперативно изменить существующие установки. - В конце файла установок стоят строки типа
;EXP=c:\windows\system\kernel32.dll
- снимите с них комментарий. Это необходимо сделать, чтобы отладчик распознавал импортируемые приложением функции стандартных динамических библиотек. - В Windows 9x SoftIce при инсталляции помещает в конце файла
AUTOEXEC.BAT
строку типаC:\ICE\WINICE.EXE
. При желании Вы всегда можете поставить комментарий на эту строку.
Загрузка программы для отладки. Для загрузки приложения в отладчик в
пакете SoftIce имеется специальная программа LOADER32.EXE. Она используется для
загрузки 32-битных приложений. Для загрузки 16-битных приложений используются
утилиты, расположенные в подкаталоге Util16
.
Итак, вернемся к программе LOADER32.EXE. Вид загрузчика показан на Рис.
4.4.10. Последовательность действий для загрузки программы в отладчик следующая:
открыть модуль, транслировать модуль - преобразование отладочной информации в
NMS
-файл, загрузить модуль. Если загрузчик разобрался с отладочной
информацией, то в окне отладчика появится программный текст, в противном случае
Вам придется работать с обычным дизассемблированным текстом. После загрузки
модуля, вы можете настроить запуск модуля в отладчике, воспользовавшись пунктом
меню Module\Setting
(Рис. 4.4.11). Настройка достаточно очевидна,
поэтому мы не будем разъяснять смысл пунктов данного окна.
Рис. 4.4.10. Вид загрузчика SoftIce (LOADER32.EXE).
Рис. 4.4.11. Окно настройки запуска модуля в отладчике Softice.