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