PE文件中的MZ签名是什么?

sam*_*moz 8 c++ header portable-executable

我正在研究一个程序,它将解析PE对象的各种信息.

虽然阅读规范,但我无法找出MZ字节存在的原因,因为我无法在这两个字节应该代表的机器类型列表中找到它.

任何人都可以澄清吗?

Mic*_*urr 13

MZ签名是MS-DOS可重定位16位EXE格式使用的签名.

PE二进制文件包含MZ头的原因是为了向后兼容.如果可执行文件在基于DOS的系统上运行,它将运行MZ版本(几乎总是只是存根,表示您需要在Win32系统上运行该程序).

当然,现在这种情况并没有那么有用,因为世界正在从DOS过渡到后来的任何事情.

当时有一些程序实际上将DOS版本和Win32版本绑定在一个二进制文件中.

和大多数处理Windows历史的事情一样,Raymond Chen有一些关于这个主题的有趣文章:

  • 有关MZ标题(MS-DOS开发人员Mark Zbikowski的缩写)的起源的一些历史信息,您可能需要查看维基百科:http://en.wikipedia.org/wiki/DOS_executable (5认同)

小智 8

这是Microsoft程序员的首字母,并将该文件标识为DOS可执行文件,请参阅http://en.wikipedia.org/wiki/DOS_executable以获取更多信息.