节表也被称为是区块表,PE 文件中的数据是按照不同的访问属性在内存中存储的,不同的访问属性被安排在了不同的节(区块)中。而节表的作用就是来描述这些节(区块)的一个说明。
节表的定义
首先来看一下节表的数据结构,其定义如下:
//
// Section header format.
//
#define IMAGE_SIZEOF_SHORT_NAME 8
typedef struct _IMAGE_SECTION_HEADER {
BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
union {
DWORD PhysicalAddress;
DWORD VirtualSize;
} Misc;
DWORD VirtualAddress;
DWORD SizeOfRawData;
DWORD PointerToRawData;
DWORD PointerToRelocations;
DWORD PointerToLinenumbers;
WORD NumberOfRelocations;
WORD NumberOfLinenumbers;
DWORD Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
#define IMAGE_SIZEOF_SECTION_HEADER 40
上面的数据结构是节表的定义,严格意义上说,节表是由若干个 IMAGE_SECTION_HEADER 组成的,而单一的 IMAGE_SECTION_HEADER 充其量只是节表中的一个项。
节表(节表项,也就是上面的 IMAGE_SECTION_HEADER 结构体)的长度是 40 个字节,这个长度也由一个宏 IMAGE_SIZEOF_SECTION_HEADER 给出。
关于 IMAGE_SECTION_HEADER 结构体中各个属性的解释在下篇文章中给出。
微信中搜索 “码农UP2U” 关注我的公众号吧!!!
网友评论