私は DOS ヘッダーを深く理解しようとしていますが、これらのヘッダーで立ち往生しています。必要なバイトは MZ 署名と PE セクションへのポインターだけであることはわかっていますが、これら 2 つが正確に何であるかを知る必要があります。
USHORT e_cblp; // Bytes on last page of file
USHORT e_cp; // Pages in file
ほとんどの実行可能ファイルのバイナリ コードでは、これらの値はそれぞれ 90h と 03h です。1 ページは 512 バイトのコードなので、3 ページありますが、どこにあるのでしょうか。ファイルのどこでそれらを見つけることができますか? 512 バイトの最後のページでこれらの 90h (144) バイトを特定するにはどうすればよいですか?
この情報は、DOS によってのみ要求されます。DOS で実行される PE ファイルの唯一のコードは DOS スタブであり、3 ページのコードではなく、わずか 64 バイトです。では、90h と 03h はそこで何をしなければならないのでしょうか? e_cblp=01h
としか言えませんe_cp=DOS header+DOS stub
か?