1

代替テキスト

IMO、これは保持する必要があります:

rva = raw - imagebase

グラフに当てはまらないのはなぜですか?

4

1 に答える 1

4

エントリ ポイント RVA、エントリ ポイントの raw アドレス、およびイメージ ベース アドレスは、そのように関連していません。

イメージベースは、「イメージがメモリにロードされるときのイメージの最初のバイトの優先アドレス」です。つまり、競合がないと仮定して、イメージが読み込まれるときの仮想アドレスです。画像の読み込み時にアドレスの競合が発生した場合 (たとえば、別の画像が重複する範囲に既に読み込まれている場合)、その画像には新しいベース アドレスが選択されます。

RVA は相対仮想アドレスです。イメージが実際にロードされたときに変更されるという意味で「相対的」です。これは、ベース アドレスが不明な場合 (イメージが読み込まれていない場合など) のアドレスです。イメージが読み込まれると、RVA は仮想メモリ内の実際のアドレスである仮想アドレス (VA) になります。

raw と RVA の違いは、アラインメントによるものです。セクション アライメント (セクションがメモリにロードされるときのセクションのアライメント) とファイル アライメント (セクション内の生データのアライメント) があります。ここでのセクション アライメントは 0x1000 で、ファイル アライメントは 0x200 です。

エントリ ポイント RVA は、イメージがロードされるときにエントリ ポイントの VA を決定するために使用されます (つまり、エントリ ポイントは仮想アドレスに配置されますEntryPoint (rva) + ImageBase)。エントリ ポイントの raw アドレスは、エントリ ポイントが配置されているファイルへのオフセットです。

このドキュメントには、配置についての適切な説明があります。

于 2010-09-19T14:04:50.027 に答える