将地址转换为符号+偏移量
Converting addresses to symbol + offset
在windbg中,有没有办法将地址转换为符号+偏移量?
例如:
66ef0c17 = MSPTLS!LssbFIsSublineEmpty+0x115f
ln
(列出最近的符号)应该可以解决问题:
0:000> ln 75da78d7
(75da78c2) USER32!NtUserGetMessage+0x15 | (75da78e2) USER32!GetMessageW
ln
有时有效,但有时 return 不是确切的符号。可以调试,你可以检查,但不是脚本的最佳选择。我发现最好的是使用 u
,第一行应该包含符号。
例如,ln
returns 是一个转换为 fffff801_1c41000f
而不是 fffff801_1c40f000
的符号:
0: kd> ln nt
(fffff801`1c410010) nt!IoStartNextPacket+0xffffffff`ffffffff | (fffff801`1c41004c) nt!IopStartNextPacketByKeyEx
0: kd> ? nt!IoStartNextPacket+0xffffffff`ffffffff
Evaluate expression: -8791324033009 = fffff801`1c41000f
u
returns 正确的符号,nt+0x0
(即使输出是 knida 令人费解的):
0: kd> u nt L1
nt!IoStartNextPacket <PERF> (nt+0x0):
fffff801`1c40f000 4d5a pop r10
在windbg中,有没有办法将地址转换为符号+偏移量?
例如:
66ef0c17 = MSPTLS!LssbFIsSublineEmpty+0x115f
ln
(列出最近的符号)应该可以解决问题:
0:000> ln 75da78d7
(75da78c2) USER32!NtUserGetMessage+0x15 | (75da78e2) USER32!GetMessageW
ln
有时有效,但有时 return 不是确切的符号。可以调试,你可以检查,但不是脚本的最佳选择。我发现最好的是使用 u
,第一行应该包含符号。
例如,ln
returns 是一个转换为 fffff801_1c41000f
而不是 fffff801_1c40f000
的符号:
0: kd> ln nt
(fffff801`1c410010) nt!IoStartNextPacket+0xffffffff`ffffffff | (fffff801`1c41004c) nt!IopStartNextPacketByKeyEx
0: kd> ? nt!IoStartNextPacket+0xffffffff`ffffffff
Evaluate expression: -8791324033009 = fffff801`1c41000f
u
returns 正确的符号,nt+0x0
(即使输出是 knida 令人费解的):
0: kd> u nt L1
nt!IoStartNextPacket <PERF> (nt+0x0):
fffff801`1c40f000 4d5a pop r10