哪个MS-DOS头字段是强制/可选的?

时间:2010-09-22 16:49:22

标签: portable-executable

alt text

以上是MS-DOS标题字段的完整列表,但我不知道哪些是强制性的,哪些是可选的,有人知道吗?

3 个答案:

答案 0 :(得分:4)

如果您正在尝试创建PE映像,e_magic(幻数)和elfanew(新exe标头的文件地址)是您必须填写的唯一必填字段。{{ 1}}应该指向PE elfanew结构。

答案 1 :(得分:2)

早在2006年,有人想创造世界上最小的PE。为此,他写了一个小型PE Fuzzer。拥有最小的代码库。

return 42;

他成功获得了以下尺寸的PE 你太忙了,无法阅读整个页面,这里是结果摘要:

  • 最小的PE文件: 97字节
  • Windows 2000上最小的PE文件: 133字节
  • 通过WebDAV下载文件并执行它的最小PE文件: 133字节

你可以在这里检查他的工作: http://www.phreedom.org/research/tinype/

他还说明了所需的标头值。这些是:

  • e_magic
  • e_lfanew
  • 机器
  • NumberOfSections
  • SizeOfOptionalHeader
  • 特色

OptionalHeader:

  • 魔术
  • AddressOfEntryPoint
  • ImageBase
  • SectionAlignment
  • FileAlignment
  • MajorSubsystemVersion
  • SizeOfImage
  • SizeOfHeaders
  • 子系统
  • SizeOfStackCommit
  • SizeOfHeapReserve

答案 2 :(得分:0)

对于MS-DOS,所有标头都是必需的。

对于Win9x及更高版本,e_lfanew必须是从图像开头到IMAGE_NT_HEADERS开头的偏移量,e_magic必须是IMAGE_DOS_SIGNATURE('MZ')。