#debugging #winapi
Вопрос:
Я написал небольшой инструмент отладчика Win32 для тестирования анти-отладочных трюков. Это хорошо работает, за исключением определенных сценариев:
В моем тестовом приложении я вызываю NtCloseHandle
внутри try
except
блока / с недопустимым значением дескриптора. Я заметил, что в этом случае мой отладчик не получает EXCEPTION_INVALID_HANDLE
исключение, однако другие исключения (например, точки останова) работают нормально.
Дальнейшее расследование показало, что это происходит только тогда, когда _PROCESS_ENVIRONMENT_BLOCK
исправлено так, PEB-gt;BeingDebugged
как есть 0
(что я делаю, чтобы сделать IsDebuggerPresent
возврат ложным). Это часть тестирования на отладку.
Когда я отключаю эту операцию исправления, мой отладчик действительно получает EXCEPTION_INVALID_HANDLE
, поэтому мой вопрос: как я могу получить это исключение даже с PEB-gt;BeingDebugged
исправлением до 0
?
Комментарии:
1. Ты не можешь. Вы не думаете, что исключение не возникло в данном случае ?
2. @RbMm Я думаю, может быть, есть способ обойти это. ОК, единственный способ-это исправить NtCloseHandle. Спасибо.