这个额外的字节是什么?

What's this extra bytes?

我正在研究 PE (Portable Executable) 格式,但我看到了用 MinGW 和 MSVC 编译的 C++ 程序之间的区别:

在 'This program cannot be run in DOS mode' 之后和 'PE' 魔术签名之前有一些额外的字节。 有谁知道这是什么以及为什么有 'Rich' 这个词?

这是"Rich header"。它是由 Microsoft 的 link.exe 添加的(注意块末尾的文本 "Rich")。它是PE文件中DOS Header和NT Header之间(DOS stub和PE Header之间)的一种结构。它包含链接库和链接器版本的版本信息。

进一步阅读: