Отключить передачу EXCEPTION_DEBUG_EVENT подключенному отладчику - PullRequest
2 голосов
/ 09 сентября 2009

Я имею дело с анти-отладочным приложением, которое запрещает передачу EXCEPTION_DEBUG_EVENT моему отладчику, вместо этого он выполняет SEH и UnhandledExceptionFilters.

  • Я пробовал это с 3 разными отладчиками (даже самодельными)
  • Мой отладчик получает другие события отладки, такие как LOAD_DLL, CREATE_THREAD и т. Д.
  • Исключения не передаются при отладке первого шанса, а также при последнем шансе
  • События точки останова моих собственных созданных потоков передаются отладчику, поэтому метод антиотладки должен быть специфичным для потока и может быть модификацией ThreadInformationBlock
  • Нет доступа к режиму ядра

Так как же может быть возможно в пользовательском режиме передать EXCEPTION_DEBUG_EVENT (только для одного потока, не затрагивая весь процесс)?

1 Ответ

2 голосов
/ 09 сентября 2009

Ну, решение довольно простое:

вызов

NtSetInformationThread(
  IN HANDLE               ThreadHandle,
  IN THREAD_INFORMATION_CLASS ThreadInformationClass,
  IN PVOID                ThreadInformation,
  IN ULONG                ThreadInformationLength );

с ThreadHideFromDebugger ( 0x11 ) как ThreadInformationClass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...