Обнаружить отладчик в C ++ с исключением без деления - PullRequest
0 голосов
/ 30 мая 2018

Я нашел функцию, написанную на c ++, которая способна обнаруживать отладчик, когда я выполняю

xor eax, eax
div eax

, но проблема в том, что, когда отладчик подключен, процесс падает после достижения div eax.Я поместил этот встроенный asm в секции __try и __except, но после достижения инструкции div eax процесс просто зависает.Весь код:

#include "windows.h"
#include <iostream>

using namespace std;

LONG WINAPI UnhandledExcepFilter(PEXCEPTION_POINTERS pExcepPointers) {
    SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)pExcepPointers->ContextRecord->Eax);
    pExcepPointers->ContextRecord->Eip += 2;
    return EXCEPTION_CONTINUE_EXECUTION;
}

int main() {
     SetUnhandledExceptionFilter(UnhandledExcepFilter);

    __try {
        __asm {
            xor eax, eax
            div eax
        }
    }
    __except (EXCEPTION_INT_DIVIDE_BY_ZERO) {
        cout << "DEBUGGER NOT FOUND" << endl;
    }

return NULL;
}

Мне нужно просто тихо обнаружить отладчик.Спасибо за любую помощь.

1 Ответ

0 голосов
/ 30 мая 2018

Учитывая, что вы используете "windows.h", вы можете упростить его до IsDebuggerPresent и / или DebugBreak

...