jjzjj

SizeOfRawData

全部标签

windows - 关于将 dll 部分复制到内存

voidCopySections(constunsignedchar*data,PIMAGE_NT_HEADERSold_headers,PMEMORYMODULEmodule){inti,size;unsignedchar*codeBase=module->codeBase;unsignedchar*dest;PIMAGE_SECTION_HEADERsection=IMAGE_FIRST_SECTION(module->headers);for(i=0;iheaders->FileHeader.NumberOfSections;i++,section++){if(section->

windows - 为什么有时 .data 部分的虚拟大小大于原始大小?

最近我发现,PE中的.data部分的虚拟大小可以大于原始大小(在文件中)。这是相当令人吃惊的。有人说这是某处未初始化数据的结果。但是在分析了一些PE之后,实在找不到这个多余的数据。以下是某些程序的PEDump结果的链接:"Helloworld"PEDump如您所见,.data部分的虚拟大小大于原始大小。为什么在这个特定示例中会这样? 最佳答案 任何初始化数据的值都存储在该部分中,如果二进制文件想在内存中为任何未初始化数据保留空间,则虚拟大小将大于原始数据大小。您不会在文件中找到此数据,因为它不需要存在于此。引用数据(在代码部分中)的

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