【问题标题】:Which of the MS-DOS header fields are mandatory/optional?哪些 MS-DOS 标头字段是必需的/可选的?
【发布时间】:2010-09-22 16:49:22
【问题描述】:

以上是MS-DOS头域的完整列表,但不知道哪些是必填的,哪些是可选的,有人知道吗?

【问题讨论】:

  • 我可以建议不要'孩子'这个并使用MS-DOS吗? (哦,是的,也接受一些答案)
  • 你知道现在每个 PE 中都存在 DOS 存根,不是吗?

标签: portable-executable


【解决方案1】:

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

【讨论】:

    【解决方案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
    • 特点

    可选标题:

    • 魔法
    • AddressOfEntryPoint
    • 图像库
    • 截面对齐
    • 文件对齐
    • 主要子系统版本
    • 图像大小
    • SizeOfHeaders
    • 子系统
    • SizeOfStackCommit
    • SizeOfHeapReserve

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-22
        • 2011-11-12
        • 2012-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-07
        • 2014-04-01
        相关资源
        最近更新 更多