首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对vc++类和对象的逆向研究

对vc++类和对象的逆向研究

作者头像
战神伽罗
发布2019-07-24 16:08:11
4670
发布2019-07-24 16:08:11
举报

经过反编译动态调试,vcpp的类实际上就是struct,跟delphi不同,它没有类头,而且所有的函数都直接放在函数表里头,跟普通的函数一样混在一起。而成员变量,则直接就在对象头开始算起,成员变量的结尾是0xfdfdfdfd,如果没有成员变量,则对象的开头就是0xfdfdfdfd。

举个例子:如果有1个int成员变量,则sizeof(class)=4;如果有2个int成员变量,则sizeof(class)=8; 如果没有,则sizeof(class)=1;

对象指针默认通过ecx传递,而delphi是第一个参数传递。

目标结论如下:

所以想要设计一个兼容delphi对象的c文件,让cpp当作一个类使用,是不合适的,因为它不是通过对象指针的偏移来调用成员函数的,而是直接跳转到了静态函数表。但是用struct调用函数指针还是可以的,这样其实就没必要使用cpp的类了,直接用c就可以了,而且函数指针更加灵活,方便定义和响应事件,以及多态,有着无与伦比的灵活优势,为什么我喜欢javascript呢,因为指针函数发挥的淋漓尽致。

逆向其他软件,比如游戏等,需要研究更多,比如虚函数等。

今天先这样,以后研究了再增加。。。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档