exe内のすべての要素が画像のベースからの相対的なオフセットにある場合、再配置テーブルが必要なのはなぜですか?たとえイメージが0X60000という正のオフセットによってディスカードされたとしても、なぜ新しいテーブルに相対的なRVAを使用しているのでしょうか?exeでの再配置の必要性
2
A
答えて
2
ポイントは、コードがRVAまたはwhats-or-everを介してグローバル(グローバル変数と関数アドレス)にアクセスしないことです。彼らはアブソリュートアドレスでアクセスします。また、このアドレスは、実行可能ファイルが優先アドレスでロードされていない場合に変更する必要があります。
再配置テーブルは、これらの場所から正確に構成されています。これは、実際のベースアドレスと優先アドレスの違いによって調整されるべきすべての場所のテーブルです。
通常、DLLとは対照的に、はありません。には再配置テーブルが含まれています。これは、アドレス空間にマップされる最初のモジュールであるため、常に優先アドレスでロードされる可能性があるためです。通常、再配置テーブルが含まれているDLLでは状況が異なります。
P.S. Windows 7では、ランダムアドレスにロードすることを望む場合に備えて、再配置テーブルを含むことがあります。
は、関数のアドレスは、常にそれらの絶対値によってアクセスされていないことに言及しなければならない:それは、セキュリティ機能(哀れな私見)
編集です。 x86の分岐命令(jmp
、call
など)には、相対オフセットで動作する「短い」形式があります。そのような場所は移転表で言及されていない。
0
EXEファイルの場合、実行可能イメージは常にその優先アドレスでロードされるため、再配置テーブルは必要ありません。再配置テーブルは安全に削除できます。
関連する問題
- 1. ラベルの再配置
- 2. ローディングイメージの再配置
- 3. ログインボタンの再配置
- 4. InstallShield Expressでのインストール後の再起動の必要性
- 5. 、なぜx86-64にはまだ再配置が必要ですか?
- 6. DataGridViewの行の再配置
- 7. いつMSVCRTの再配布可能ファイルが必要ですか?
- 8. イベントの必要性
- 9. ランタイムメモリアドレスバインディングの必要性
- 10. 再配置画像 - iOSの
- 11. u-boot:再配置
- 12. 再配置軸ラベル
- 13. PHPの再帰的な検索と配列要素の置換
- 14. アルゴリズム:2Dマトリックスの再配置(要素の反転)
- 15. 2D配列内の要素の位置を返す再帰的
- 16. jqueryのvalidateプラグインでエラーメッセージを再配置
- 17. バナー広告の配置にHTMLとCSSのコーディングが必要
- 18. jQueryの.ready()の必要性
- 19. C++のリファレンスの必要性
- 20. 助けを必要とするPHPの配列を再構築
- 21. xamlの要素の配置
- 22. UIImageViewをUIViewの上に配置する、明確化が必要
- 23. "main"(java)の必要性
- 24. OrderedDictionary、ListDictionary、HybridDictionaryの必要性
- 25. フレックスボタンの再配置の問題
- 26. データメンバーのコンパイル時の再配置?
- 27. SVN再チェックアウト(スイッチ/再配置/何か?)
- 28. 仮想再配置のどの部分を変更する必要がありますか?
- 29. JSPの再コンパイルが必要ですか?
- 30. ロード時ELF再配置
"コードはグローバル変数(グローバル変数と関数アドレス)にRVAや何があってもアクセスしません" どうすれば可能ですか?グローバル変数は、それ自体がベースからの相対オフセットにあるデータセクションに入りません – user1232138
グローバル変数はEXEデータセクションに格納されます。だから何?それでも彼らは絶対的な仮想アドレスを持っています。グローバル変数にアクセスするサンプルプログラムをコンパイルし、デバッガでコードをチェックするだけです。リンカーがそこに直接アドレスを置くことがわかります – valdo
これには特別な理由はありますか?私はなぜグローバル変数のすべてが相対オフセットにあるのではないかということですか?リンカー作家の人生をもっと楽にしてくれるでしょうか? – user1232138