如何在windbg内核模式下设置内存断点?

时间:2016-02-29 08:44:05

标签: debugging memory reverse-engineering windbg breakpoints

我想在内核模式调试器

中设置windbg访问时的内存断点

我希望每次使用内核调试器命中usermode中的特定模块时,调试器都会中断。

但是我已经在某个地方读过它不可能设置它,为了制作一个内存断点我必须编写一个插件来实现它

我尝试使用带有!vprotect命令的SDbgExt插件,但无法设置内存bp

如果我必须编写一个插件以在内核模式下允许内存bp它必须是一个驱动程序?

我已经阅读了windows internals book中的一些章节,但它根本不能帮助我。

我无法找到太多关于如何开始处理它的信息

3 个答案:

答案 0 :(得分:0)

您可以在内核模式下在用户模式地址上设置断点。你应该注意的唯一事情是用" .process / i"切换到正确的过程。命令

答案 1 :(得分:0)

如果它是一次性断点 - 也就是说,您对通过调试销毁进程感到满意 - 使用e命令(编辑内存)将整个模块清零。将整个事物设置为cc(据我记得是int 3)...零也可以。一旦触摸任何模块的代码,您就会中断。

下一步,记住你所处的位置(相对于模块)并设置一个合适的断点。

希望有所帮助。

(编辑)你有完整的符号吗?如果你这样做,你是否尝试过bm模块!*

答案 2 :(得分:0)

听起来您想要设置“访问断点”,而不是指定要指定范围的地址?我从未在windbg中看到它。 BA断点使用HW调试寄存器而不是像SW断点那样插入INT,因此这绝对是特定于HW平台的。 一旦使用HW调试器,我就在ARM芯片组上完成了这项工作。 ARM上的ETM允许您在地址范围上设置触发器。