Windows 禁止将异常调试事件传递到附加的调试器

Windows 禁止将异常调试事件传递到附加的调试器,windows,debugging,exception,assembly,exception-handling,Windows,Debugging,Exception,Assembly,Exception Handling,我正在处理一个反调试应用程序,它禁止异常调试事件传递给我的调试器,而是执行其SEH和未处理的异常过滤器 我尝试了3个不同的调试器(甚至是自制的) 我的调试器接收其他调试事件,如加载DLL、创建线程等 第一次调试和最后一次调试时不会传递异常 我自己创建的线程的断点事件被传递到调试器,因此反调试方法必须是特定于线程的,并且可能是ThreadInformationBlock的修改 没有内核模式访问 那么,如何才能在用户模式下传递异常调试事件(仅针对一个线程,而不影响整个进程)?很好。。解决方案相当

我正在处理一个反调试应用程序,它禁止异常调试事件传递给我的调试器,而是执行其SEH和未处理的异常过滤器

  • 我尝试了3个不同的调试器(甚至是自制的)
  • 我的调试器接收其他调试事件,如加载DLL、创建线程等
  • 第一次调试和最后一次调试时不会传递异常
  • 我自己创建的线程的断点事件被传递到调试器,因此反调试方法必须是特定于线程的,并且可能是ThreadInformationBlock的修改
  • 没有内核模式访问

那么,如何才能在用户模式下传递异常调试事件(仅针对一个线程,而不影响整个进程)?

很好。。解决方案相当简单:

召唤

使用
ThreadHideFromDebugger(0x11)
作为
ThreadInformationClass

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