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

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

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

Общая схема отладки

while (TRUE) { WaitForDebugEvent(event, timeout);

switch (event->dwDebugEventCode) { case EXCEPTION_DEBUG_EVENT:

switch (event->u.Exception.ExceptionRecord.ExceptionCode)

{

case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_BREAKPOINT:

(...)

}

case LOAD_DLL_DEBUG_EVENT: (...)

}

Общая схема отладки: Context

Текущее состояние потока описывается с помощью структуры Context

Передается отладчику для отладки событий и обработчикам исключений

Содержит значения всех регистров и флагов

Зависит от типа ЦПУ

Общая схема отладки: TEB & PEB

TEB = Thread Environment Block

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

Windows использует сегмент fs для его хранения (смещение 0x18 – указатель на себя)

mov eax, fs:[0x18]

PEB = Process Environment Block

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

TEB есть указатель на структуру PEB по смещению 0x30

Структуры важны при анализе кода

Имеется список загруженных модулей (Peb.Ldr)

Есть проверка на использование отладчика (PEB.BeingDebugged)

Используется для установки обработчика исключений

(TEB.NtTib.ExceptionList)

Исключения

Исключения первого уровня

Исключения второго уровня

Обощенный механизм обработки исключений

Обработка программных исключений

Структурированная обработка исключений (SEH)

Механизм ОС для обработки исключений, генерируемых приложениями

в коде __try/__except/__finally

Исключения обрабатываются той же нитью, что и вызвала его

Может быть зарегистрировано большое число обработчиков

Векторная обработка исключений (VEH)

Расширяет SEH

Сначала вызываются VEH обработчики

Функция AddVectoredExceptionHandler() в MSDN

Развертка обработчиков структурированных исключений

Обобщенный механизм

обработки исключений

1. Некорректная обработка данных вызывает ошибку, которая обычно обрабатывается исключением (например, деление на ноль).

2. Исключение генерируется исследуемой программой в режиме пользователя

3. обработчик исключений ищет отладчик, работающий в режиме пользователя и передает ему исключение (исключение первого уровня, first-chance ” exception)

4.Отладчик получает уведомление об исключение (исключение первого уровня ), и если исследуемая программа имеет обработчик данного исключения, то управление передается ему.

5. Если отладчик не может обработать исключение, то управление передается вновь обработчику исключений.

6. Обработчик исключений, работающий в режиме пользователя, сначала осуществляет поиск векторных обработчиков исключений (vectored exception handlers, VEH) и вызывает их.

7. Если не было создано ни одного векторного обработчика прерывания, то начинается развертка обработчиков структурных исключение (SEH).

8. Если и в этом случае исключение не было обработано, то исключение передается обработчику уровню ядра.

9. Отладчик, работающий режим пользователя, получает исключение второго уровня (”second-chance” exception notification). => исследуемая программа аварийно завершилась.

Наиболее часто используемые исключения при отладке

INT 3 (точки останова) EXCEPTION_BREAKPOINT

пошаговое выполнения (TF =1 ) EXCEPTION_SINGLE_STEP

ошибка доступа к памяти (некорректная адресация, нарушения прав доступа)

EXCEPTION_ACCESS_VIOLATION, EXCEPTION_INT_DIVIDE_BY_ZERO

Отладчик OLLYDBG

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