0

アップロードするファイルがあります (32 ビットまたは 64 ビットの *.wim ファイル - WAIK/WADK)。

wim ファイルが特定の場所にコピーされます。

以前は 32 ビットしかサポートしていませんでしたが、現在は UEFI の目的で、32 ビット (BIOS 用) と 64 ビット (UEFI 用) の両方をサポートする必要があります。

さて、アップロードが完了したら、意図はファイルの種類に基づいており、32 ビットまたは 64 ビットのフォルダーにコピーします。

どうやって見分ける?

PS: これは WIM ではなく、ファイル タイプのより一般的な決定であるため、win タグを削除しました。

4

1 に答える 1

2

WIMの問題を無視して、exeファイル(Portable Executable)がコンパイルされているアーキテクチャを見つけることを検討する場合、これは比較的簡単です。

  • ファイルは、文字列「MZ」のASCIIエンコーディングに相当する2バイトの0x4d、0x5aで始まる必要があります。
  • オフセット0x3cで、4バイトのリトルエンディアンエンコードを読み取り、PEヘッダーへのオフセットを取得します。
  • オフセット「PEヘッダー」で、文字列「PE \ 0 \0」のASCIIエンコーディングに相当する4バイトの0x50、0x45、0x00、0x00をチェックする必要があります。
  • PEヘッダーの直後に、20バイト長のCOFFファイルヘッダーがあります。マシンタイプは、COFFヘッダーの最初の2バイトにエンコードされます(リトルエンディアン)。

あなたのケースに関連するのは、おそらくマシンタイプ0x014c(i386)と0x8664(AMD64)です。

詳細については、MicrosoftからPE仕様を入手できます。さまざまなマシンタイプがセクション2.3.1にリストされています。

また、COFFヘッダーの特性フィールド(最後の2バイト)をチェックして、ファイルを実行可能ファイル(DLLファイルなどではなく)として識別することもできます。

于 2013-01-21T17:02:36.067 に答える