【发布时间】:2010-09-22 16:49:22
【问题描述】:
以上是MS-DOS头域的完整列表,但不知道哪些是必填的,哪些是可选的,有人知道吗?
【问题讨论】:
-
我可以建议不要'孩子'这个并使用MS-DOS吗? (哦,是的,也接受一些答案)
-
你知道现在每个 PE 中都存在 DOS 存根,不是吗?
以上是MS-DOS头域的完整列表,但不知道哪些是必填的,哪些是可选的,有人知道吗?
【问题讨论】:
如果您尝试创建 PE 映像,e_magic(幻数)和 elfanew(新 exe 标头的文件地址)是您必须填写的唯一必填字段。elfanew 应该指向PE IMAGE_NT_HEADER 结构。
【讨论】:
早在 2006 年,就有人想创建世界上最小的 PE。为此,他编写了一个小型 PE Fuzzer。使用尽可能小的代码库。
return 42;
他设法获得了以下尺寸的 PE 您太忙了,无法阅读整个页面,这里是结果摘要:
你可以在这里查看他的作品: http://www.phreedom.org/research/tinype/
他还说明了所需的标头值。它们是:
可选标题:
【讨论】:
对于 MS-DOS,所有标题都是必需的。
对于 Win9x 及以上版本,e_lfanew 必须是图像开头到 IMAGE_NT_HEADERS 开头的偏移量,并且 e_magic 必须是 IMAGE_DOS_SIGNATURE ('MZ')。
【讨论】: