PE文件中节标题中的
PointerToRawData
条目是否按升序保留偏移量?
我可以假设PE文件中节标题的PointerToRawData
条目按照升序顺序保留偏移量,而它们在节表中的排序是什么?
我看到文档说:
在图像文件中,必须由链接器分配部分的VA 所以它们是按升序排列并且相邻的,它们必须是一个 可选标头中
SectionAlignment
值的倍数。
但是,我找不到有关PointerToRawData
成员的任何信息?
如果可能,请提供信息来源。
谢谢。
答案 0 :(得分:3)
是的,部分数据,PointerToRawData值指向的部分数据,需要与部分标题的顺序相同,部分标题需要按照您所说的VA顺序。
根据Microsoft Portable Executable and Common Object File Format Specification - Revision 8.3 - 2013年2月6日:
部分数据
[...]部分数据必须按顺序出现 相应部分的RVA值(与中的各个部分标题一样) 部分表)。
如果中的SectionAlignment值,则对图像文件有其他限制 可选标头小于体系结构的页面大小。对于这样的文件, 当文件中的段数据的位置必须与其在内存中的位置匹配时 加载图像,以便截面数据的物理偏移量与RVA相同。
答案 1 :(得分:2)
在部分表中,部分标题的VirtualAddress
和PointerToRawData
字段必须按升序排列,即第一部分标题包含最低VirtualAddress
和PointerToRawData
我猜微软做出了加快加载过程的决定。
官方PE文档在名为" 部分数据"的部分中说:
在图像文件中,截面数据必须在边界上对齐为 由可选标头中的
FileAlignment
字段指定。部分 数据必须按相应的RVA值的顺序出现 部分(与部分表中的各个部分标题一样)。