在windbg中,如何在kernel32.dll中设置所有函数的断点?

6

我希望了解在example.DLLexample()函数中,调用kernel32.dll的函数序列和功能。

在windbg中,如何在kernel32.dll中设置所有函数的断点?

我尝试过bm kernel32!*,但似乎没有起作用。

3个回答

7

我不会像你说的那样做。当然可以,但是如果使用bm /a kernel32!*,您会无意中在数据符号上设置bps(而不是实际函数)。在您的情况下,wt - 跟踪和监视数据(您可以在windbg包中提供的debugger.chm中查找)可能是您想要的。


7

在一些低级别的内核服务DLL调用处设置断点可能会导致应用程序异常。

您可以使用rohitab的API监视器观察其DLL调用,然后在您感兴趣的调用上设置断点。


2
感谢您推荐API监视器。这正是我正在寻找的! - Adarsha

2
Kernel32是一个被广泛使用的DLL - 您可能会发现对每个函数进行断点调试过于嘈杂。您也不需要在每个kernel32函数上设置断点,只需在它导出的函数上设置即可。
如果我是您,我会运行"link /dump /exports kernel32.dll",将输出写入文件,然后编写一个简单的脚本,以获取函数名称并将"bp kernel32!"+函数名称写入新文件。然后,只需将该文件的内容粘贴到windbg命令窗口中即可。
在调试器的脚本支持中可能有一种直接的方法来完成此操作,但是通过黑客攻击上述脚本所需的时间比学习如何通过调试器脚本完成它要少得多。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接