我们最最最最最厉害并且最重要的部分来了,那么就是节表跟节了
我们的PE程序主要就是由一个一个节组成的,那我们就用节表来定义了各个Section的属性跟偏移位置。那么我们所需要的节表就来了。
Section表紧跟在NT头的PE可选头后面。
我们来分析一下他的各个变量
1. Name1:块名,一般以.开始命名,应该仅此而已了
2. Misc.VirtualSize (到现在我都没弄明白啥是misc)这个VirtualSize的意思是这节加载到内存之后实际占用的内存空间大小。
3. VirtualAddress 这节的RVA,他一定是按照内存页对齐方式来对齐大小的。
4. SizeOfRawData 这个Section在磁盘当中以文件形式存存在的时候的文件大小。他是按照PE文件头中指定的文件对齐方式来对齐大小的。
5. PointerToRawData 这个section在磁盘中以文件形式存在的时候的偏移量,他也是按照文件对齐方式来对齐大小的(仅对于可执行文件)
6. Characteristics 块属性,该字段是一组指出块属性(如代码/数据/可读/可写等)的标志。
我们可以得见它主要的的内容就是定义了相对应Section分别在内存中存在的时候跟在磁盘中存在的时候的大小跟位置。