【发布时间】:2011-12-28 15:57:08
【问题描述】:
我有一个位于特定内存地址的相对虚拟地址 (RVA) 数组。我可以将它转储到 windbg 并查看 RVA 列表,如下所示:
dd 77f10000+00002650 和 输出是: 77f12650 000034a6 000034af 000034b9 000034ce ....
这里,77f10000 是 DLL 的基地址,00002650 是我显示的数组的 RVA。
现在,内存转储中的每个 RVA 都可以添加到 DLL 的基地址中,并且可以查看该位置的相应字符串。
例如,如果我取数组中的第一个条目,即:000034a6
将此 RVA 添加到 DLL 的基地址 77f10000 并显示如下:
da 77f10000+000034a6 和 输出为:77f134a6 "AbortDoc"
现在,通过这种方式,我可以通过执行以下操作来查看数组中下一个对应 RVA 的下一个字符串:
da 77f10000+000034af 和 输出为:77f134af "AbortPath"
同样我想遍历数组中剩余的条目并显示相应的字符串。
我想在 windbg 中使用一个单行脚本来执行此操作。我想学习如何做到这一点,但是我在网上找不到足够的文档或示例来帮助我制作类似的东西。
我认为 .foreach 命令可以用来做到这一点:
示例:.foreach(myVariable {dd 77f10000+00002650}){!do } myVariable 将存储 windbg 命令的输出。但是,我需要从该行中一次选择一个元素并进行迭代。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: windbg