PE文件中节标题内的PointerToRawData条目是否按升序保留偏移量?

时间:2016-08-19 17:10:56

标签: windows assembly x86 windows-10 portable-executable

  

PE文件中节标题中的PointerToRawData条目是否按升序保留偏移量?

我可以假设PE文件中节标题的PointerToRawData条目按照升序顺序保留偏移量,而它们在节表中的排序是什么?

我看到文档说:

  

在图像文件中,必须由链接器分配部分的VA   所以它们是按升序排列并且相邻的,它们必须是一个   可选标头中SectionAlignment值的倍数。

但是,我找不到有关PointerToRawData成员的任何信息?

如果可能,请提供信息来源。

谢谢。

2 个答案:

答案 0 :(得分:3)

是的,部分数据,PointerToRawData值指向的部分数据,需要与部分标题的顺序相同,部分标题需要按照您所说的VA顺序。

根据Microsoft Portable Executable and Common Object File Format Specification - Revision 8.3 - 2013年2月6日:

  

部分数据

     

[...]部分数据必须按顺序出现   相应部分的RVA值(与中的各个部分标题一样)   部分表)。

     

如果中的SectionAlignment值,则对图像文件有其他限制   可选标头小于体系结构的页面大小。对于这样的文件,   当文件中的段数据的位置必须与其在内存中的位置匹配时   加载图像,以便截面数据的物理偏移量与RVA相同。

答案 1 :(得分:2)

在部分表中,部分标题的VirtualAddressPointerToRawData字段必须按升序排列,即第一部分标题包含最低VirtualAddressPointerToRawData

我猜微软做出了加快加载过程的决定。

官方PE文档在名为" 部分数据"的部分中说:

  

在图像文件中,截面数据必须在边界上对齐为   由可选标头中的FileAlignment字段指定。部分   数据必须按相应的RVA值的顺序出现   部分(与部分表中的各个部分标题一样)。