禁用EXCEPTION_DEBUG_EVENT传递给附加的debugging器

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

  • 我用3个不同的debugging器(甚至自制的)
  • 我的debugging器接收其他debugging事件,如LOAD_DLL,CREATE_THREAD等
  • 当第一次机会debugging和最后一次机会时,exception不会通过
  • 我自己创build的线程的断点事件传递给debugging器,所以反debugging方法必须是线程特定的,可能是对ThreadInformationBlock
  • 没有内核模式访问

那么怎么才能在usermode中传递EXCEPTION_DEBUG_EVENT(只有一个线程,不影响整个进程)呢?

那么..解决方案很简单:

呼叫

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

使用ThreadHideFromDebugger ( 0x11 )作为ThreadInformationClass