文件大小和PE大小怎么可能不相等?

逆向工程 补丁反转 德尔福
2021-06-29 16:10:43

我有一个应用程序,我将另一个可执行文件嵌入其中作为资源,以查看大小是否不同,但它们不是,并且使用资源编辑器我可以看到里面的应用程序。至于我的目标文件大小大于 PE 大小看截图

我曾经认为应用程序中嵌入了一些东西,但在 Delphi 中如何?作为我已经检查过的资源。

1个回答

根据文件系统,“文件大小”是磁盘上文件的大小。

“PE Size”是PE文件中结构SizeOfImage字段IMAGE_OPTIONAL_HEADER的值因为那样计算它的价值在这里

IMAGE_OPTIONAL_HEADER.SizeOfImage是虚拟内存中加载的可执行文件/dll 的大小。它与磁盘上的大小不同。

你可以用VirtualAddress + VirtualSize最后一节的来计算它

IMAGE_OPTIONAL_HEADER.SizeOfImage是四舍五入到 的值IMAGE_OPTIONAL_HEADER.SectionAlignment(通常与页面大小相同)。

SizeOfImage例如,如果文件附加叠加层,则可以小于文件大小

SizeOfImage 例如,如果节的虚拟大小大于其原始大小,则可能大于文件大小,压缩节的情况通常如此。