首页
社区
课程
招聘
[原创]类的逆向分析
发表于: 2013-6-6 20:27 7150

[原创]类的逆向分析

2013-6-6 20:27
7150

类的权限控制只是编译器的产物,在汇编层次无法体现

类的构造函数VC特征
1.调用时,传递this指针。例如:lea     ecx, [ebp+testb] ; this
2.函数内部,先处理this指针。例如:mov     [ebp+this], ecx
3.若是有虚函数,则虚函数表赋值.例如:mov     dword ptr [eax], offset ??_7CTestA@@6B@ ; const CTestA::`vftable'
4.返回this指针.例如:mov     eax, [ebp+this]

类的析构函数VC特征
1.调用时,传递this指针。例如:lea     ecx, [ebp+testb] ; this
2.函数内部,先处理this指针。例如:mov     [ebp+this], ecx
3.若是有虚函数,则虚函数表赋值.mov     dword ptr [eax], offset ??_7CTestA@@6B@ ; const CTestA::`vftable'
4.无返回值

类的成员函数VC特征
1.调用时,传递this指针。例如:lea     ecx, [ebp+testb] ; this
2.函数内部,先处理this指针。例如:mov     [ebp+this], ecx
3.函数地址引用,只有CALL指令。

类的内联成员函数VC特征
与类的成员函数VC特征一样

类的虚成员函数VC特征
1.调用时,传递this指针。例如:lea     ecx, [ebp+testb] ; this
2.函数内部,先处理this指针。例如:mov     [ebp+this], ecx
3.函数地址引用,能在虚表中找到。例如:
.rdata:00402394 ; const CTestA::`vftable'
.rdata:00402394 ??_7CTestA@@6B@ dd offset ?Sub@CTestA@@UAEHHH@Z
.rdata:00402394                                         ; DATA XREF: CTestA::CTestA(int,char,int)+Ao
.rdata:00402394                                         ; CTestA::CTestA(void)+Ao ...
.rdata:00402394                                         ; CTestA::Sub(int,int)
.rdata:00402398                 dd offset ?Sub@CTestA@@UAEHXZ ; CTestA::Sub(void)
.rdata:0040239C                 dd 0
类的内联虚成员函数VC特征
与类的虚成员函数VC特征一样

类的静态成员函数VC特征
1.与普通函数无异。


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

收藏
免费 5
支持
分享
最新回复 (5)
雪    币: 203
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
站位,不错,这个在分析面向对象时很有用。
2013-6-6 21:49
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
同感,C++的逆向分析是比C语法的要稍微多考虑一点东西..
2013-6-6 22:15
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了 感谢分享  留爪
2013-6-6 22:19
0
雪    币: 4
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习了  谢谢
2013-6-7 10:38
0
雪    币: 307
活跃值: (131)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
楼主考虑一下不同的调用方式__stdcall,会有新的发现
2013-6-26 03:15
0
游客
登录 | 注册 方可回帖
返回
//