我需要将最后加载的PE的地址(在调试过程中)放到 Alias / register中。
使用lm
命令在 WinDbg 会话中手动执行此操作没有问题,然后只需手动复制已加载模块的地址 - 但这必须是 WinDbg脚本的一部分。
我可以将PE的名称,完整路径,pdb路径传递给 WinDbg 作为参数而不会出现问题。但我似乎没有找到一种方法来获取地址,而无需手动复制到 Alias 。 也许有办法解决上次加载的模块的地址? (也许通过一个特定的寄存器,保存这个值)
答案 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
列表中找到答案?但既然你说这对你来说不是问题,我在答案中不会考虑这个问题。