2-自定义类型数据的解读分析

自定义类型数据的解读分析

1.如何找到一个数据结构体(类)的起始点

步骤:

  • 要想找到一个结构体的头部,等于要找到这个结构体的指针(因为指针一定指向头部)

  • 由于类指针一般以this的方式出现,因此变成了找this

  • 由于this一般出现在成员函数中,只要这个成员函数改写了成员变量,底层一定是指针+偏移量的形式访问这个数据的

  • 因此最终要找的实际是改写了成员变量的那个语句中的this指针

2.内存对齐

下面的输出结果是12

#include<iostream>
using namespace std;
struct test {
char x;
int m;
char b;
};
int main()
{
cout << sizeof(test);
}
//在实际存储中是char 0 0 0 int char 0 0 0

3.数据分析

首先根据被修改数据的偏移量找到结构体的首地址,

根据内存偏移的规则,一般将内存数据读到文件里,每四个字节划分一次

如果有末尾不像00这种,可以猜测是字符数组,放到vs里去试一下

4.使用CE结构分析工具