10

PE オブジェクトを解析してさまざまな情報を取得するプログラムに取り組んでいます。

ただし、仕様を読んでも、MZ バイトが存在する理由がわかりません。これらの 2 バイトが表すマシン タイプのリストにこれが見つからないからです。

誰でも明確にできますか?

4

6 に答える 6

18

MZ署名は、MS-DOSで再配置可能な16ビットEXE形式で使用される署名です。

PEバイナリにMZヘッダーが含まれている理由は、下位互換性のためです。実行可能ファイルがDOSベースのシステムで実行される場合、MZバージョンが実行されます(ほとんどの場合、Win32システムでプログラムを実行する必要があることを示すスタブです)。

もちろん、これは、世界がDOSからその後に続くものに移行していた頃ほど有用ではありません。

当時、DOSバージョンとWin32バージョンを1つのバイナリで実際にバインドするプログラムがいくつかありました。

そして、Windowsの歴史を扱っているほとんどのものと同様に、レイモンド・チェンはこの主題についていくつかの興味深い記事を持っています:

于 2009-06-05T17:34:31.147 に答える
8

Thety は Microsoft プログラマーのイニシャルであり、ファイルが DOS 実行可能ファイルであることを示しています。詳細については、 http://en.wikipedia.org/wiki/DOS_executableを参照してください。

于 2009-06-05T17:23:20.083 に答える
3

Mark Zbikowski は、自分のイニシャルを元のMS-DOSexe形式に変換しました。この署名は、.EXEファイルをDOS上のはるかに単純な.COM形式と区別するために必要でした。

すべてのPEファイルには16ビットのDOSプログラムも含まれているため、この.EXEヘッダーで始まります。このDOSプログラムは通常、「このプログラムにはMicrosoftWindowsが必要です」などを出力します。最新のコンパイラがまだDOSスタブを生成するかどうかはわかりませんが、PE標準では、PEは16ビットのEXEヘッダーで始まるとされています。

于 2009-06-05T17:41:28.110 に答える
3

ウィキペディアの記事Iczelion の PE チュートリアルを読むと、互換性を維持し、dos または HX DOS Extender が MZ ヘッダーの横にある特定のコードを実行できるようにするためだけにあることがわかります。

devsourceから、MZ は MS-DOS の開発者の 1 人である Mark Zbikowski を表すなど、より多くの情報を見つけることができます。また、オペレーティング システムがどのように動作し、MZ ヘッダーからのデータを処理するか。

于 2009-06-05T17:22:46.967 に答える
0

これは dos 実行可能ファイルの「マジック ナンバー」です。無視できる古いもの。

Dos 実行可能ファイル

于 2009-06-05T17:20:53.363 に答える