【发布时间】:2014-08-05 11:46:18
【问题描述】:
我正在研究 MS Internet Explorer 11 和 mshtml.dll,让我们快速明确:我正在研究 Windows 8.1 上“mshtml.dll”的“CTitleElement”类,我想在某些函数上设置断点在“CTitleElement”类中查看该类内部发生了什么(例如:创建标题元素、获取标题、设置标题、获取标题长度等...)
我使用windbg附加IE进程,下面是我设置断点的方法:
0:013> bp MSHTML!CTitleElement::GetTitle
0:013> bp MSHTML!CTitleElement::SetTitle
0:013> bp MSHTML!CTitleElement::s_StringTable
0:013> bp MSHTML!CTitleElement::CreateElement
0:013> bp MSHTML!CTitleElement::TitleLength
然后使用“g”命令进入 IE 并打开以下简单的 html 文件:
<html>
<title>Hello There!</title>
</html>
但不幸的是,我没有得到理想的结果,调试器没有命中断点。 正如我所注意到的,这是一个不稳定的情况,因为:“有时它会被击中,有时不会!”
我想到了 ASLR 和我刚刚设置的断点类型(“bp”),通过安装 EMET 并禁用所有内存保护来禁用 ASLR,但我仍然无法以可靠的方式获得结果。
有解决这个问题的建议吗?
问候。
【问题讨论】:
-
您确定在正确的进程中设置断点吗? IE 因为每个选项卡和可能不同的 HTML 框架生成子 iexplore.exe 进程而臭名昭著,因此您可能会看到每个选项卡有多个进程。
标签: function reverse-engineering windbg internet-explorer-11