WinDbg - 将最后加载的PE的地址转换为别名

时间:2017-09-29 12:07:49

标签: debugging windbg

我需要将最后加载的PE的地址(在调试过程中)放到 Alias / register中。

使用lm命令在 WinDbg 会话中手动执行此操作没有问题,然后只需手动复制已加载模块的地址 - 但这必须是 WinDbg脚本的一部分

我可以将PE的名称,完整路径,pdb路径传递给 WinDbg 作为参数而不会出现问题。但我似乎没有找到一种方法来获取地址,而无需手动复制到 Alias 。 也许有办法解决上次加载的模块的地址? (也许通过一个特定的寄存器,保存这个值)

1 个答案:

答案 0 :(得分:3)

也许答案真的很简单:模块的名称已经是地址,所以没有其他需要找到它。

0:006> lm m notepad*
Browse full module list
start    end        module name
011f0000 0145c000   notepad__   (deferred)             

0:006> ? notepad__
Evaluate expression: 18808832 = 011f0000

0:006> as lastloaded notepad__

0:006> ? lastloaded
Evaluate expression: 18808832 = 011f0000

如果(无论出于何种原因)您需要将其作为数字,请使用.printf

0:006> as /c xx .printf "%d", notepad__
0:006> .echo ${xx}
18808832

0:006> as /c xxh .printf "%x", notepad__
0:006> .echo ${xxh}
11f0000

对我来说,问题在于#34;最后加载"的重点。您如何从lm列表中找到答案?但既然你说这对你来说不是问题,我在答案中不会考虑这个问题。