jjzjj

VirtualSize

全部标签

windows - PE : Relation between SizeOfRawData and VirtualSize fields of the section header

我看到对于图像文件中的部分,VirtualSize字段是加载到内存中时部分的总大小,而SizeOfRawData字段是部分的大小磁盘上的初始化数据。在检查.idata部分时,VirtualSize字段设置为0x14,而SizeOfRawData字段设置为0x400。为什么链接器-在本例中为MinGWld-使文件部分如此之大,而加载到内存中的部分只是其大小的一小部分?此外,VirtualSize字段的用途是什么?为什么不总是加载整个部分,即加载SizeOfRawData字节?我在官方PE文档中没有看到描述或它们之间的关系。 最佳答案

c - PE 文件部分 - SizeOfRawData 或 VirtualSize

最近,我一直在工作场所处理PE文件,并对幕后Windows加载程序的工作产生了兴趣。我知道加载PE文件时,加载器需要将PE部分复制到分配的PE内存中,一些加载器提交SizeOfRawData字节,一些提交VirtualSize字节的部分有时SectionAlignment(当SizeOfRawData等于0时,对于未初始化的数据)。我的问题是,我怎么知道SectionAlignment字节对于该部分的所有未初始化数据是否足够?也许我有一个比SectionAlignment大得多的未初始化缓冲区,那么我如何确定它不会覆盖其他部分?我可以预测需要分配的大小吗?为了安全起见,我可以提交Vir