以IWebBrowser2组件为例
目的:获得Navigate和Navigate2的两个函数的地址(它们都是虚函数,即用virtual关键字修饰)
编写代码查看反汇编
可以看到最终调用了CALL EAX
往上追溯EAX,发现其最终是由[EBP-8]也就是lpWebBrowser2指针计算出IWebBrowser2组件函数的地址。
然后,我们再看看lpWebBrowser2指针中到底是什么
堆栈 SS:[0012FF60]=00159AD8 而 [00159AD8]=7E55DAE0 也就是虚函数表第一个函数地址
我们Navigate函数地址也就是[7E55DAE0]+0x2C=7E57BCB2
试验-从虚表获取函数地址
为IDA编写插件
对任意指定的COM组件获取函数地址
https://github.com/howmp/COMFinder
许可协议
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,转载请注明出处。