arm32下继承与多态的逆向分析
来源:互联网 发布:网络教育录取查询 编辑:程序博客网 时间:2024/04/30 15:37
0x0 概述
本文分析了arm32下继承与多态在内存中的表现形式,得到构造函数和析构函数的另外一个识别条件,并且获得了多态的实现原理。
0x1 c代码
#include <stdio.h>class Person{public: Person(){ printf("Person() \r\n"); } virtual ~Person(){ printf("~Person()\r\n"); } virtual void showspeak(){ printf("I am Person\r\n"); }};class Chinese:public Person{public: Chinese(){ printf("Chinese()\r\n"); } virtual ~Chinese(){ printf("~Chinese()\r\n"); }}};int main(){ Chinese ch; Person *p=&ch; p->showspeak();}
0x2 构造函数
构造函数的实现是先调用基类的构造函数,然后将虚表指针写入对象开头,最后调用自己的构造函数。
0x3 析构函数
析构函数的实现是先将虚表指针写入对象开头,然后调用自己的析构函数,最后调用基类的构造函数。调用基类的构造(析构)函数的顺序可以用来区别构造函数和析构函数。
0x4 多态的实现
多态的实现通过虚表来完成,一般遇见BLX R3这类的指令,就可以怀疑其是实现多态。
0x5 总结
继承通过在继承类的构造(析构)函数中调用基类的构造(析构)函数来实现。构造函数先调用基类的构造函数,析构函数则先执行自己的析构函数,这一点可以用来区别构造函数和析构函数。最后BLX R3极有可能就是用来实现多态的。
0 0
- arm32下继承与多态的逆向分析
- arm32下对象数组的逆向分析
- CRC32的逆向分析与源码
- C语言下的封装、继承与多态
- 继承与多态之自学分析
- 继承与多态(下)
- 12-继承与多态(下)
- 【十五】继承与多态(下)
- adams的逆向分析
- 类的逆向分析
- 作死的逆向分析
- Android的逆向分析
- 逆向分析的经验
- 类的逆向分析
- crackMe的逆向分析
- Android逆向与病毒分析
- PHP正则表达式的逆向引用与子模式分析
- Android逆向分析APK的打包与安装
- VC include 路径解析
- 临界段——win32 API函数
- iOS 核心动画简介
- C++实验2-标准体重
- caffe 实战系列:如何写自己的数据层(以Deep Spatial Net为例)
- arm32下继承与多态的逆向分析
- Calendar-起始日期处理成当天的0点0分0秒
- iOS友盟做第三方登录和分享注意事项
- fremark导出word,带图片的
- 第二次C++上机作业——1
- html 标签属性大全 (完美版)
- Redis Windows下的安装使用
- C++第二次作业
- 事件(CEvent)——MFC