PE オブジェクトを解析してさまざまな情報を取得するプログラムに取り組んでいます。
ただし、仕様を読んでも、MZ バイトが存在する理由がわかりません。これらの 2 バイトが表すマシン タイプのリストにこれが見つからないからです。
誰でも明確にできますか?
PE オブジェクトを解析してさまざまな情報を取得するプログラムに取り組んでいます。
ただし、仕様を読んでも、MZ バイトが存在する理由がわかりません。これらの 2 バイトが表すマシン タイプのリストにこれが見つからないからです。
誰でも明確にできますか?
MZ署名は、MS-DOSで再配置可能な16ビットEXE形式で使用される署名です。
PEバイナリにMZヘッダーが含まれている理由は、下位互換性のためです。実行可能ファイルがDOSベースのシステムで実行される場合、MZバージョンが実行されます(ほとんどの場合、Win32システムでプログラムを実行する必要があることを示すスタブです)。
もちろん、これは、世界がDOSからその後に続くものに移行していた頃ほど有用ではありません。
当時、DOSバージョンとWin32バージョンを1つのバイナリで実際にバインドするプログラムがいくつかありました。
そして、Windowsの歴史を扱っているほとんどのものと同様に、レイモンド・チェンはこの主題についていくつかの興味深い記事を持っています:
Thety は Microsoft プログラマーのイニシャルであり、ファイルが DOS 実行可能ファイルであることを示しています。詳細については、 http://en.wikipedia.org/wiki/DOS_executableを参照してください。
Mark Zbikowski は、自分のイニシャルを元のMS-DOSexe形式に変換しました。この署名は、.EXEファイルをDOS上のはるかに単純な.COM形式と区別するために必要でした。
すべてのPEファイルには16ビットのDOSプログラムも含まれているため、この.EXEヘッダーで始まります。このDOSプログラムは通常、「このプログラムにはMicrosoftWindowsが必要です」などを出力します。最新のコンパイラがまだDOSスタブを生成するかどうかはわかりませんが、PE標準では、PEは16ビットのEXEヘッダーで始まるとされています。
ウィキペディアの記事とIczelion の PE チュートリアルを読むと、互換性を維持し、dos または HX DOS Extender が MZ ヘッダーの横にある特定のコードを実行できるようにするためだけにあることがわかります。
devsourceから、MZ は MS-DOS の開発者の 1 人である Mark Zbikowski を表すなど、より多くの情報を見つけることができます。また、オペレーティング システムがどのように動作し、MZ ヘッダーからのデータを処理するか。
これは dos 実行可能ファイルの「マジック ナンバー」です。無視できる古いもの。