从地址中查找堆或堆块或段

时间:2014-01-14 19:49:18

标签: c++ windows memory heap windbg

我一直在调试软件中的堆损坏。我可以将数据写入堆并控制某些指针。我可以在不知道这一点的情况下实现执行代码的目标,但它让我感到困惑。

问题是我无法在哪个堆中找到我正在编写的块,也不能找到堆段。

我在Windbg下使用了!heap -x [address] and !heap -x -v [address]并且他们没有给我任何结果。 我知道当第一个没有未提交的空间可用时,一些堆可能会保留另一个堆段。但是,我已经转储了所有堆段,我找不到任何具有类似于我正在寻找的基址的人。

对我来说,似乎有点奇怪的是没有具有这些块的进程或特定于应用程序的堆!!

1 个答案:

答案 0 :(得分:4)

如果堆已损坏,则!heap -x命令可能无法正常运行,

尝试使用!heap -s -v来确定。 示例:Windbg !heap

执行!地址,你应该看看内存是堆栈还是堆。