アプリケーションの起動時に読み込まれる多くの dll ファイルを含むプロジェクトがあります。メモリ イメージが再配置されるように、dll ファイルのベースアドレスがオーバーラップします。ベースアドレスを自動的に割り当てる可能性や、各 dll ファイルの「適切な」ベースアドレスを計算する方法はありますか?
frast
質問する
638 次
2 に答える
7
プラットフォームSDKとVisual Studioに同梱されているREBASEユーティリティを使用して、アプリケーションによってロードされたDLLの全体のベースアドレスを設定すると思います
システム Dll を除く、プログラムを構成する DLL のリストを REBASE に提供すると、REBASE はすべての DLL のダミー ロードを実行し、それらに新しいベース アドレスを割り当てます。
これは、最終ビルド ステップの一部として実行できます。
于 2008-10-08T07:25:37.270 に答える
3
DLLを配布する場合、ベースアドレスの設定方法に関係なく、自分で作成していない他のDLLがすでにそのアドレスにロードされているリスクが常にあります(たとえば、グローバルフックDLL)。
さらに、Vista用にビルドしている場合は、実際に/DYNAMICBASEを使用してASLRを有効にする必要があります。
これがmsdnリンクです:http://msdn.microsoft.com/en-us/library/bb384887.aspx。
于 2008-10-08T12:50:59.127 に答える