1

40h私が調べたすべての EFI イメージには、MS-DOS スタブと場合によっては使用されていない PE 署名の間に少なくとも数バイトのパディングがあります。ゼロで埋め尽くされています。

私はリンカを書いていて、私の最初の計画は指定された場所に 0 のパディングを持つことでしたが、ファイルをロードした後に UEFI ローダーが単に応答を停止したようです。DOS ヘッダーと PE ヘッダーを 1 つの場所にマージするなど、いくつかの奇妙な組み合わせを試しましたが、同じ問題が発生しました。

また、DOS スタブを完全に削除しようとしましたが、何らかの理由でファームウェアもイメージを認識できました。通常、イメージが署名で始まらない場合MZ、ローダーはエラー メッセージを出力して終了します。この場合、オプションのヘッダーに無効な Magic 値を書き込んだ後、ローダーがそれを認識してエラー メッセージを出力するため、COFF 形式を適切に直接解析していると確信しています。問題は、それでもバグが発生し、何も出力しないことです。ハングするだけです。この通常のように PE ヘッダーを解析しています。他のマシンで動作することを期待できますか?

それ以外の場合、画像は完全に機能していると確信しています。そうでない場合でも、パディングがある場合、ローダーはエラー メッセージを出力し、ハングする代わりに終了します。イメージが正常にロードされて実行されると、Hello Worldメッセージが出力されます。これは、10hパディングが存在し、すべてが完全に機能し始めたときに発生します。どうすればそのようなタスクを達成できますか? 助言がありますか?

4

0 に答える 0