所有 PE 二进制大小都是 256 字节的倍数吗?

所有 PE 二进制大小都是 256 字节的倍数吗?

我检查了两个 PE 二进制文件的大小,都是 256 字节的倍数,但我不确定这是否是 PE 标准,还是仅适用于 Windows?

答案1

我在网上找不到任何迹象表明 PE 二进制文件必须是 256 字节的倍数,而且这似乎不太可能。

作为反驳,我查看了excel.exe我当前的机器(来自 Office 2003),结果推翻了这一理论。

文件大小:
10 095 808 (9.62MiB)
不能被 256 整除(除法结果为 39436.75)。

PE 二进制文件?是:
以。。开始麦哲伦标识符,第一行(在记事本中读取!)包含预期的This program cannot be run in DOS mode.字符串。本节用于安全地转移 DOS(即 DOS 本身,而不是 Windows 命令行)运行二进制文件而不会崩溃。

包含聚乙烯标识符位于大约 295 个字节处(再次说明,在记事本中读取,如有不准确,请谅解)。这是在所有兼容操作系统中开始执行的位置。

附言:现代 Windows 上的大多数(所有?)32 位可执行文件都是 PE 格式。

答案2

尺寸或者磁盘大小

尺寸是文件实际包含的字节数。

磁盘大小是文件必须在驱动器上占用的字节数。这通常更大,因为它必须四舍五入为簇的大小(也称为分配单元) 的分区/磁盘。这通常是磁盘扇区大小的倍数,对于大多数现代磁性 HDD,扇区大小通常为 512 字节。

簇大小通常为 4KiB默认情况下- 取决于操作系统、文件系统和磁盘大小 - 但通常可以定义格式化磁盘/分区时使用的大小。
检查一下Microsoft 知识库文章了解大多数操作系统的默认大小信息。

这意味着 1 字节文件必须占用 1 个整个簇的大小,因为一个簇可能只包含一个文件,不管该文件是否只占用簇的一小部分。

相关内容