Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2015_лекции / Лекция №6_2015

.pdf
Скачиваний:
61
Добавлен:
22.03.2016
Размер:
4.66 Mб
Скачать

Отладка в режиме ядра

Инструменты SoftICE (не поддерживается с 2007)

Windbg

Локальная отладка в режиме ядра

Ядро

Ntoskrnl.exe

Windbg.exe

Пространство пользователя

Базовые приемы работы с отладчиками

пошагово

используется флаг EFLAGS.TF (Trace Flag), если он включен, то процессор генерирует прерывание после каждой выполненной инструкции

с заходом внутрь функций

без захода внутрь функций

программные остановы (брейк-поинты)

Точки останова программы

(breakpoints)

используются для анализа текущего состояния программы

например, узнать адрес вызываемой процедуры

узнать название создаваемого файла в функции

CreateFile

00401008 mov ecx, [ebp+arg_0]

0040100B mov eax, [edx]

0040100D call eax

Виды точек останова

Программные остановы

условные и безусловные

GetProcAddress при вызове RegSetValue.

Аппаратные остановы

Программные остановы

0xCC ( инструкция INT 3 ) Достоинства :

нет ограничений на число устанавливаемых программных остановах

Недостатки

изменение программного кода

не может срабатывать на операциях записи или чтения по адресам, только на выполнении инструкций.

Аппаратные остановы

8 отладочных регистра DR0-DR7

DR0-DR3 для хранения адресов точек остановов

DR7 для конфигурации типа события (для каждого из 4 адресов)

останов при выполнении, на операции чтения, чтения/записи

длина контролируемых данных (1, 2или 4 байта)

Флаг General Detect DR7 = 1

программный останов при каждой операции записи в отладочные регистры

Аппаратные остановы

Достоинства

исходный код без изменения

Недостатки

ограниченной число точек останова

ограниченная длина контролируемых данных

под Windows с помощью структурных обработчиков может быть изменено содержимое отладочных регистров

Особенности отладчиков

Чтение памяти и запись в память

Отладчик должен уметь читать адреса виртуальной помяти отлаживаемого процесса и записывать по ним

Реализцется с помощью обычных функций

Windows API

ReadProcessMemory()

WriteProcessMemory()

Особенности отладчиков

Исходные точки останова = первые точки останова, когда отладчик получает управление над отлаживаемом процессом

3 исходные точки останова OllyDbg• системные точки останова

загрузчик останавливается до того как будет запущен код

приложения

точка входа приложения

Точка входа определяется согласно заголовку PE

Win Main (если известна)

Помните, что код может начать исполняться до того, как будет выполнен программный останов:

Спецификация PE/COFF и секция TLS

Поддержка вызовов функций TLS в Ollydbg2.0

Windows API для отладки

реализовано в dbghelp.dll

наиболее интересные функции:

DebugActiveProcess() подключение к существующему процессу

WaitForDebugEvent() получение событий

DebugBreakProcess() точка останова в активном отлаживаемом процессе

Соседние файлы в папке 2015_лекции