禁止将EXCEPTION_DEBUG_EVENT传递给附加的调试器

时间:2009-09-09 16:02:20

标签: windows debugging exception assembly exception-handling

我正在处理一个反调试应用程序,该应用程序禁止将EXCEPTION_DEBUG_EVENT传递给我的调试器,而是执行其SEH和UnhandledExceptionFilters。

  • 我尝试了3种不同的调试器(甚至是自制的)
  • 我的调试器接收其他调试事件,如LOAD_DLL,CREATE_THREAD等
  • 当第一次机会调试以及最后一次机会
  • 时,不会通过例外
  • 我自己创建的线程的断点事件被传递给调试器,因此反调试方法必须是特定于线程的,并且可能是ThreadInformationBlock的修改
  • 没有内核模式访问

那么如何在usermode中传递EXCEPTION_DEBUG_EVENT(仅针对一个线程,而不影响整个过程)?

1 个答案:

答案 0 :(得分:2)

嗯..解决方案很简单:

呼叫

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

ThreadHideFromDebugger ( 0x11 )ThreadInformationClass