1

バイト ストリームを調べて Windows PE (ポータブル実行) の開始を検出する方法の提案を探しています。

検索できる特定のヘッダーがあることは知っていますが、これらのどの組み合わせで PE を識別できますか? または、それをよりうまく行うことができる別のテクニックはありますか?

できるだけ軽量にする必要がありますが、誤検知はできるだけ少なくします。

コード化された例ではなく、実際に何らかの方向性を探していますが、人々がそれを行うためのコードを持っているなら、なおさらです:)

(実現可能性を見ているだけなので、どの言語でも実行できますが、cやmatlabなどはおそらく私が行く方向です)

4

1 に答える 1

4

最初のステップは、4 バイト シーケンスを探すことです。

PE\0\0

これは PE ヘッダーの署名です。

それに続いて、有効なアーキテクチャ コードを探します (または、Intel アーキテクチャだけを期待する場合は、その特定のアーキテクチャ コードを探します)。

0x14d インテル i860

0x14c Intel I386 (486 と 586 に使用される同じ ID)

0x162 MIPS R3000

0x166 MIPS R4000 0x183 DEC アルファ AXP

ネットワーク上の他のデータや必要に応じて、データが PE バイナリを表していると合理的に想定するのに十分な場合があり、その時点でデータを実行可能ファイルとして読み込もうとする場合があります。絶対的な自信が必要な場合は、ローダーと同じようにヘッダーを解析する必要があります。PE 構造に関する完全な情報は、次の Web サイトにあります。

http://msdn.microsoft.com/en-us/library/ms809762.aspx

于 2013-05-01T15:50:42.770 に答える