定位函数体
分析ds段值,将其设置为肉眼可见
分析赋值语句,将第一个变量名设置为char*
猜测代码段2为rep直接循环赋值
猜测段3为未指定长度的char*
找main函数
分析代码段
分析构造函数
分析析构函数
END
找main函数
分析代码段
分析构造函数
END
找main函数
构造函数
END
找main函数
分析main函数
#include <stdio.h>
// 深入探索C++对象模型
class COBj2
{
};
class CObj
{
private:
// 内类初始化的操作在哪里初始化
int number1 = 10;
int number2 = 20;
public:
CObj() = default;
CObj(int n1, int n2):
number1(n1), number2(n2) { }
// 通过函数访问数据成员的例子
void set(int n1, int n2)
{
number1 = n1;
number2 = n2;
printf("CObj::CObj()\n");
}
};
int main()
{
// 这个 obj2 不存在构造和析构
// 对于没有任何数据的对象来说,
// 编译器不会提供构造函数
COBj2 obj2;
// 局部对象
CObj obj;
CObj obj3(10, 20);
obj.set(100, 200);
// !!!!!!!! 自己提供一个使用赋值方式的构造函数
// 比较该构造函数和其他两种的区别
return 0;
}
分析构造函数1
分析构造函数2
分析函数调用1
END
找main函数
分析构造函数
分析成员函数
分析main函数
实现虚表hook
END
找main函数
END
原文:https://www.cnblogs.com/liujun1016/p/14051006.html