《C++反汇编与逆向分析技术揭秘》之十——构造函数和析构函数

稀土 2017-12-13

对象生成时会自动调用构造函数。只要找到了定义对象的地方,就找到了构造函数调用的时机。不同作用域的对象的生命周期不同,如局部对象、全局对象、静态对象等的生命周期各不相同,只要知道了对象的声明周期,便可以推断出构造函数的调用时机

  • 局部对象
《C++反汇编与逆向分析技术揭秘》之十——构造函数和析构函数

反汇编:

获取对象首地址并调用构造函数:

《C++反汇编与逆向分析技术揭秘》之十——构造函数和析构函数

对象的地址为:

《C++反汇编与逆向分析技术揭秘》之十——构造函数和析构函数

进入构造函数,先是push一堆寄存器:

《C++反汇编与逆向分析技术揭秘》之十——构造函数和析构函数

还原ecx寄存器,并初始化:

《C++反汇编与逆向分析技术揭秘》之十——构造函数和析构函数

构造函数属于成员函数,在调用时要用到this指针。返回this指针是构造函数的特征之一(这是识别局部变量构造函数的必要条件)

相关推荐