我想了解API“IsDebuggerPresent”的工作原理。 根据我的理解,到目前为止,API检查TEB结构,然后转到PEB偏移量,然后检查其中的“BeingDebugged”标志。
我找不到的是在操作系统核心中触发此标记的原因。
答案 0 :(得分:0)
由于我们知道IsDebuggerPresent只能检测usermode调试器,而不能检测其他类型的调试器(例如内核调试器),因此很可能意味着该标志设置在DebugActiveProcess函数内的某处。
要验证这一点,您可以快速设置。打开以下
因此,如果您在DebugActiveProcess
上断点并跟踪它,您将看到它最终到达NtDebugActiveProcess。从内核空间进入和退出后,设置了BeingDebugged标志。
如果你想深入了解,你需要能够使用内核调试器,并知道如何正确设置它,否则你最终会崩溃你的盒子。
如果我将来有时间,我可能会写一个更详细的回复