windbg 引用符号不一致

逆向工程 风袋
2021-07-05 04:10:01

作为作业的一部分,我正在尝试在iexplore.exe(Aurora 漏洞)中进行一些调试

在 iexplorer 8 中加载测试网页后,我打开 windbg 并附加到 iexplorer 进程。

我使用以下方法验证我的符号路径:

.sympathy
Symbol search path is: srv*C:\Users\User\Desktop\Symbols
Expanded Symbol search path is: srv*c:\users\user\desktop\symbols

我知道我感兴趣的是在 里面mshtml,所以我通过以下方式列出了 mshtml 中的所有符号:

x /t /n mshtml!*

接下来,我使用:

u mshtml!CEventObj::GenericGetElement

要查看我感兴趣的函数并发现我要检查的指令之一位于:

mshtml!CEventObj::GenericGetElement+0x91

我尝试通过以下方式在该地址设置断点:

 bp mshtml!CEventObj::GenericGetElement+0x91

然后,我运行:

bl

显示的断点实际上是在:

mshtml!CEventObj::GenericGetElement+0x3b

为什么我的断点不在我指定的点?

我也试过使用:

u mshtml!CEventObj::GenericGetElement+0x91

代码与我根据函数的符号地址简单地反汇编整个函数时完全不同。

任何想法将不胜感激。

1个回答

由于包括函数分块的优化,符号中的偏移量变得无关紧要 使用实际地址来设置断点 windbg 通常在末尾的括号中显示实际地址

例如 msxml 中的一些随机函数

0:007> ? msxml3!AbortParse 
Evaluate expression: 1956897309 = 74a3e21d
0:007> # je msxml3!AbortParse l10
msxml3!AbortParse+0x18:
74a3e235 7451            je      msxml3!AbortParse+0x61 (74a3e288)
0:007> bp msxml3!AbortParse+0x61
0:007> bp 74a3e288
0:007> bl
 0 e 74a3e27e     0001 (0001)  0:**** msxml3!AbortParse+0x57
 1 e 74a3e288     0001 (0001)  0:**** msxml3!AbortParse+0x61
0:007> .bpcmds
bp0 0x74a3e27e ;
bp1 0x74a3e288 ;