ZwSetInformationThread
(将ThreadInformationClass
设置为0x11)实现的经典反调试技巧。尽管存在许多OllyDbg模块是为了揭示此方法隐藏的线程的存在,但我无法找到有关在OllyDbg中取消隐藏这些线程的规范技术的任何信息。 该函数通常是否挂在用户模式下(例如
SetWindowsHookEx
),或者修补直接调用NTDLL函数或间接调用该函数的系统调用的指令是否更为实用?#1 楼
据我所知,SetWindowsHookEx并没有真正用于这种挂钩。您可以将NtSetInformationThread钩在要分析的二进制文件的导入中,并使其始终在ThreadHideFromDebugger上返回成功,但不将调用转发给实际函数。这很弱,因为GetProcAddress或手动导入会绕过它。函数。
我强烈建议不要这样做,但出于完整性考虑,您还可以将NtSetInformationThread钩在系统服务分配表中。这里有适用于不同Windows版本的表的很好的转储。如果您想自己获取表中的索引,则可以从ntdll.dll中反汇编NtSetInformationThread导出。调试参考。