![在这里插入图片描述](https://img-blog.csdnimg.cn/20200829174117128.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMjMyNTE5,size_16,color_FFFFFF,t_70#pic_center)
一、节表结构
#define IMAGE_SIZEOF_SHORT_NAME 8
typedef struct _IMAGE_SECTION_HEADER {
BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; //ASCII字符串 可自定义 只截取8个 可以8个字节都是名字
union { //Misc 双字 是该节在没有对齐前的真实尺寸,该值可以不准确
DWORD PhysicalAddress; // 真实长度,这两个值是一个联合结构,可以使用其中的任何一个
DWORD VirtualSize; //一般是取后一个
} Misc;
DWORD VirtualAddress; //在内存中的偏移地址,加上ImageBase才是在内存中的真正地址
DWORD SizeOfRawData; //节在文件中对齐后的尺寸
DWORD PointerToRawData; //节区在文件中的偏移
DWORD PointerToRelocations; //调试相关
DWORD PointerToLinenumbers;
WORD NumberOfRelocations;
WORD NumberOfLinenumbers;
DWORD Characteristics; //节的属性
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
SizeOfRawData 和 联合体VirtualSize的值 的关系
联合体的大小可能大于 SizeOfRawData 。可能等于 也可能小于
没有初始化的变量在文件中是不分配内存的 ,如果没有初始化的全局变量特别多的话,联合体的值可能会SizeOfRawData 大
他们谁大 按谁的来
DWORD Characteristics:
二、节表个数
1、有几个节表,就有几个节
2、节表个数存储在标准PE头第二个成员中,WORD NumberOfSections;