DLLのベースアドレスの再配置

1.定義

複数のDLL動的ライブラリは、単一のexeファイルに一緒にコンパイルされ、EXEとDLLローダ負荷EXEそれぞれが既定のベースアドレスを有し、DLL事実、特定のグループが発生するベースアドレスリロケーションアドレス変更は、そう完成負荷は、同じではないが(ハードコードされたアドレスを含む)画像ファイルマシンコード命令で得DLL内部とロード命令、ロードと同じではない前後ように、これはグループリベースによってなければなりませんアドレス再配置。

2、多くの場合、間違った方法ローカル&共通の印刷に表示されます

アドレスは、多くの場合、表示されます。

(1)gitの更新コード場合

(2)MinGWのコンパイルされたコード

(3)他の動作行動コード

共通するのは間違った方法を印刷します:

XXXXXXXX .... VirtualAllocのポインタがヌル、Win32エラー487で

Cygwinのヒープ、Win32エラーのためXXXXXXXX ....もらえない予備スペース0

3、ソリューション

MSYS-1.0.dllライブラリの結果、以下のベースアドレス、基本的エディタツールやビンので、ベースアドレスの再配置することが必要です。

リベースツールは、独自のREBASE.EXEをもたらすでしょう、適切なディレクトリに下に見つけることができ、オンラインでダウンロードすることができたり、エラーに対応するエディタまたは上記のツールを、対応する自分の問題をインストールします。

例えば:

エラー0ソリューション:

REBASE.EXE -b 0 0x50000000 XXXXXX \ binに\ MSYS-1.0.dll

エラー487解決法:

REBASE.EXE -b 0x760000000 XXXXXXX \ binに\ MSYS-1.0.dll

 

 

 

公開された23元の記事 ウォンの賞賛4 ビュー9972

おすすめ

転載: blog.csdn.net/hxp1994/article/details/95385483