COM组件中函数的定位
2012-3-20 18:12:44 Author: guage.cool(查看原文) 阅读量:9 收藏

发布于 

以IWebBrowser2组件为例

目的:获得Navigate和Navigate2的两个函数的地址(它们都是虚函数,即用virtual关键字修饰)

编写代码查看反汇编

code

od

可以看到最终调用了CALL EAX

往上追溯EAX,发现其最终是由[EBP-8]也就是lpWebBrowser2指针计算出IWebBrowser2组件函数的地址。

然后,我们再看看lpWebBrowser2指针中到底是什么

堆栈 SS:[0012FF60]=00159AD8 而 [00159AD8]=7E55DAE0 也就是虚函数表第一个函数地址

我们Navigate函数地址也就是[7E55DAE0]+0x2C=7E57BCB2

vftable

试验-从虚表获取函数地址

testcode

watch

为IDA编写插件

对任意指定的COM组件获取函数地址

https://github.com/howmp/COMFinder

许可协议

本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,转载请注明出处。


文章来源: https://guage.cool/com-vftable/
如有侵权请联系:admin#unsafe.sh