IsDebuggerPresent

eXeL@B DVD

Материал из Справочник исследователя программ

Перейти к: навигация, поиск

Описание функции

BOOL WINAPI IsDebuggerPresent(void);

Функции не передаётся никаких параметров, в ответ она говорит, запущен процесс под отладчиком (EAX = 1) или нет (EAX=0). Функция экспортируется из модуля kernel32.dll

Внутренности функции

MOV EAX, DWORD PTR FS:[18]  ; EAX = offset TIB
MOV EAX, DWORD PTR DS:[EAX+30]; EAX = offset PEB
MOVZX EAX, BYTE PTR DS:[EAX+2]; EAX = Peb.BeingDebugged

Переменная влияет на многие механизмы, один из которых - отладочный вывод. Функция DbgPrint() проверяет это поле, если оно обнулено сообщение доставляется отладчику ядра, иначе генерируется исключение DBG_PRINTEXCEPTION_C(0x40010006), которое обрабатывает пользовательский отладчик. Это позволяет локально обрабатывать отладочный вывод(например посредством VEH перенаправить его в консоль).

Защита от обнаружения

Вручную изменить на 0. Или использовать плагины для OllyDbg - например HideDbg

Источник — «https://exelab.ru/faq/IsDebuggerPresent»