首页
社区
课程
招聘
[讨论]虚函数表的作用?
发表于: 2007-10-24 09:09 6605

[讨论]虚函数表的作用?

2007-10-24 09:09
6605
在逆向分析C++类的虚函数时,会发现每一个有虚函数的类均有一个虚函数表,在进行虚函数调用时,均会进入类似如下的调用:

        00401084   mov         eax,dword ptr [ebp-20h]        ;取出虚函数表地址       
        00401087   lea         ecx,[ebp-20h]       
        0040108A   call        dword ptr [eax+4]        ;调用虚函数表中的第二个虚函数

程序在编译时,所有虚函数的地址都确定了,都填入到了虚函数表中,然后通过寄存器间接寻址的方式来对虚函数进行调用,如:call dword ptr [eax+4]

有点不明白,既然虚函数的地址都已确定,就可以直接通过函数地址硬编码的方式来进行调用的呀,如:call 00401010

这样就可以不需要虚函数表了,而且更简单,同样也可以实现虚函数的多态性。

也许是我对虚函数理解还够透彻,请高手指点!谢谢!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 50161
活跃值: (20630)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
2007-10-24 09:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
雪下得那么深 下得那么认真
倒映出我躺在雪中的伤痕
2007-10-24 09:17
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
谢谢老大,这份资料太好了,正是我想要找的,谢谢!
2007-10-24 09:29
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
不是不尊重翻译者,只是水印太大把文字都遮住了,所以稍微处理了下
上传的附件:
2007-10-24 10:32
0
雪    币: 266
活跃值: (52)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
很好,非常感谢!
2007-10-24 11:49
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
good things!
2007-10-24 17:44
0
雪    币: 220
活跃值: (12)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=szdbg;374149]在逆向分析C++类的虚函数时,会发现每一个有虚函数的类均有一个虚函数表,在进行虚函数调用时,均会进入类似如下的调用:

        00401084   mov         eax,dword ptr [ebp-20h]        ;取出虚函数表地址       
        00401087   lea         ecx,...[/QUOTE]
运行时绑定 ..
2007-10-25 13:02
0
游客
登录 | 注册 方可回帖
返回
//