如何在进程环境块中触发“BeingDebugged”字段

时间:2018-04-28 09:40:00

标签: api reverse-engineering

我想了解API“IsDebuggerPresent”的工作原理。 根据我的理解,到目前为止,API检查TEB结构,然后转到PEB偏移量,然后检查其中的“BeingDebugged”标志。

我找不到的是在操作系统核心中触发此标记的原因。

1 个答案:

答案 0 :(得分:0)

由于我们知道IsDebuggerPresent只能检测usermode调试器,而不能检测其他类型的调试器(例如内核调试器),因此很可能意味着该标志设置在DebugActiveProcess函数内的某处。

要验证这一点,您可以快速设置。打开以下

  1. 记事本(我们将调试此应用程序)
  2. Ollydbg或其他dbger(附加到记事本)
  3. 内存查看工具,例如HeapMemView(将此附加到记事本以观看霹雳标志)
  4. 要附加到第一个实例的另一个调试器实例 OllyDbg的。
  5. 因此,如果您在DebugActiveProcess上断点并跟踪它,您将看到它最终到达NtDebugActiveProcess。从内核空间进入和退出后,设置了BeingDebugged标志。

    如果你想深入了解,你需要能够使用内核调试器,并知道如何正确设置它,否则你最终会崩溃你的盒子。

    如果我将来有时间,我可能会写一个更详细的回复