3

16 進エディタで PE ファイルを見ると、セクション テーブルと最初のセクションの間に何バイトかあることがよくありましたが、これはあまり意味がありません。私に関する限り、アラインメントに合わせるために 00 バイトのパディングが必要です。ただし、これは反対のことを示すスクリーンショットです。

強調表示されたブロックは、ほぼ Bound Import Table であることがわかりました。しかし、私はまだ混乱しています。このテーブルがセクションにないのはなぜですか? これは常に当てはまりますか、それとも特定のコンパイラ/リンカーの仕様ですか? この特定の問題に関するドキュメントは見つかりませんでした。このトピックで見つけることができるものはすべて、基本的に次のように述べています。

  1. DOS MZ ヘッダー
  2. DOS スタブ
  3. PE ヘッダー
  4. 断面表
  5. セクション 1
  6. 第2節
  7. セクション 3

... 等々

この問題に遭遇する前は、セクションの外にある可能性があるという事実にさえ気づいていませんでした(もちろん、上にリストしたもの以外に)。

[編集]

概念の証明 (Mox は私を信じていなかったので):

主PE

4

4 に答える 4

5

などのデータ ディレクトリIMAGE_DIRECTORY_ENTRY_BOUND_IMPORTは、セクションの外に存在できます。既知のセクションの外に存在するデータ ディレクトリの別の例はIMAGE_DIRECTORY_ENTRY_CERTIFICATE、実行可能ファイルが署名されたときに証明書情報を格納するために使用されるデータ ディレクトリであるデータ ディレクトリです。

データ ディレクトリは、セクションの外側またはセクション内のデータを指すことも、セクション全体を指すこともできます。データ ディレクトリはIMAGE_DIRECTORY_ENTRY_RESOURCE、「.rsrc」セクション全体を指します。特定のデータ ディレクトリは既知のセクションを指しており、これらはMicrosoft による PE 形式の仕様に記載されています

于 2012-10-06T22:05:43.950 に答える
1

バインドされたインポート テーブルなどの項目は、リンカが raw イメージに配置したい場所に書き込むことができます。ゼロバイトをテーブルで上書きし、データディレクトリでポインターを正しくします。おそらく、DOS ヘッダーまたはスタブの途中をインポート テーブルで上書きすることもできます。ディレクトリ内のポインタが正しい限り、それは機能します。

于 2012-12-06T15:51:13.317 に答える
0

IEXPLORE.EXE の 32 ビット バージョンと 64 ビット バージョンの両方に IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT エントリがありません。

これは LordPE のスナップショットで、Windows 7 マシン上の IEXPLORE.EXE の 64 ビット バージョンと、欠落している IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT エントリ (緑色) を示しています。

ここに画像の説明を入力

正しいディレクトリ エントリを見ていないようです。

于 2012-09-17T07:50:37.573 に答える
0

LordPe で確認できる限り、iexplore.exe の IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT エントリは空です。

ここに画像の説明を入力

于 2012-09-15T07:18:26.847 に答える