5

セクションの配置からファイルの配置に変換する手順は次のとおりです。

  1. データのRVAを見つける
  2. RVAから、参照されるデータが属するセクションを導出します。セクションが重ならないため、これは簡単です。さまざまなセクションの開始アドレスは、ファイルヘッダーにあります。
  3. RVAとセクションの開始アドレスの違いを見つけて、データオフセット、つまりセクション内のそのデータのオフセットを見つけます。
  4. ファイルヘッダーから、同じセクションについて、ファイル内の同じセクションの場所を見つけます。
  5. ファイル内のセクションの場所にデータオフセットを追加して、ファイル内のデータのアドレスを見つけます。

しかし、私はそれを理解していません、誰かがより詳細に詳しく説明できますか?

4

1 に答える 1

9

配置は切り上げられた値です。OSはとにかくチャンクで物を移動するため、セクションのデータサイズは効率のために切り上げられます。

File Alignmentは通常512バイトで、ほとんどのファイルシステムのブロックサイズに適合します。

Section Alignmentは通常4096バイトで、メモリページのサイズに適合します。

したがって、 513バイトのデータ.textを含むセクション( ""など)を持つPEファイルがある場合:

  • セクションは、ファイル上で1024バイトに.text切り上げられます。
  • セクションは、メモリ内で4096バイトに.text切り上げられます。

ファイルとメモリの両方で可能なスラックスペースの量に注意してください。

なぜ「ある配置から別の配置に変換」したいのかわかりません。あなたがそこに着いたレシピは、謎として運動の目標を残します。あなたの目標がPEファイルを操作することであるなら、あなたが考慮しなければならないのはファイルの配置だけです。WindowsローダーはSectionAlignmentをメモリにスローするときに処理するので、通常はそれについてまったく考える必要はありません。

あなたはここでPEについてもっと読むことができます。

于 2010-09-22T03:15:40.900 に答える