под отладчиком происходит переход на
pop eax ; выталкиваем его содержимое в регистр eax
or ah, 1 ; взводим флаг TF
push eax ; кладем eax
в стек
popf ; выталкиваем его содержимое в регистр флагов
; теперь флаг трассировки взведен!
jmp under_debugger ; после выполнения этой команды генерируется
; исключение и если отладчик не установлен,
; его перехватывает SEH-обработчик, который
; корректирует EIP и эта команда не выполняется
; под отладчиком происходит переход на ветку
; under_debugger
//
... ; основной код программы
//
; SEH-обработчик. может быть расположен в любом месте
; (лучше расположить его подальше от защитного кода,
; чтобы он не так бросался в глаза)
SEH_handler:
mov esi, [esp+0ch] ; указатель на контекст регистров
assume esi: PTR CONTEXT
mov [esi].regEip, offset continue
; откуда продолжать выполнение
; в отсутствии отладчика
xor eax, eax
ret ; выход из SEH-обработчика
continue:
; // отсюда будет продолжено управление, если отладчик не установлен
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий