IMO、これは保持する必要があります:
rva = raw - imagebase
グラフに当てはまらないのはなぜですか?
エントリ ポイント RVA、エントリ ポイントの raw アドレス、およびイメージ ベース アドレスは、そのように関連していません。
イメージベースは、「イメージがメモリにロードされるときのイメージの最初のバイトの優先アドレス」です。つまり、競合がないと仮定して、イメージが読み込まれるときの仮想アドレスです。画像の読み込み時にアドレスの競合が発生した場合 (たとえば、別の画像が重複する範囲に既に読み込まれている場合)、その画像には新しいベース アドレスが選択されます。
RVA は相対仮想アドレスです。イメージが実際にロードされたときに変更されるという意味で「相対的」です。これは、ベース アドレスが不明な場合 (イメージが読み込まれていない場合など) のアドレスです。イメージが読み込まれると、RVA は仮想メモリ内の実際のアドレスである仮想アドレス (VA) になります。
raw と RVA の違いは、アラインメントによるものです。セクション アライメント (セクションがメモリにロードされるときのセクションのアライメント) とファイル アライメント (セクション内の生データのアライメント) があります。ここでのセクション アライメントは 0x1000 で、ファイル アライメントは 0x200 です。
エントリ ポイント RVA は、イメージがロードされるときにエントリ ポイントの VA を決定するために使用されます (つまり、エントリ ポイントは仮想アドレスに配置されますEntryPoint (rva) + ImageBase
)。エントリ ポイントの raw アドレスは、エントリ ポイントが配置されているファイルへのオフセットです。
このドキュメントには、配置についての適切な説明があります。