Dependency Walkerで実行ファイルの依存ファイルを調べる
概要 :
VisualStudioやPlatformSDKなどに同梱されているDependency Walker(depends.exe)というアプリケーションがあります。
このアプリケーションは、実行ファイル(exe, dll, ocx, sys, etc.)の他ファイル(dll, ocx, sys, etc.)への依存を調べるのに便利なツールです。
このアプリケーションは、マイクロソフトから提供されていますが、フリーソフトとして提供されています。
今回は、このDependency Walkerについて、簡単に説明したいと思います。
ダウンロードしてインストールしてみましょう
先のダウンロードサイトから、depends22_xxx.zipをダウンロードします。
先のダウンロードサイトには、以下のようなダウンロードファイルがあります。
- Download Version 2.2.6000 for x86 (Windows 95 / 98 / Me / NT / 2000 / XP / 2003 / Vista) [610k]
- Download Version 2.2.6000 for x64 [468k]
- Download Version 2.2.6000 for IA64 [605k]
etc.
CPUによりダウンロードするファイルが異なります。通常、ほとんどの場合は、x86で大丈夫だと思いますが、
64bitやx86アーキテクチャでない他のCPU(例えばAlphaチップ)などをご利用の場合は、気をつける必要があります。
ダウンロードしたZIPファイルを適当なディレクトリ(インストールディレクトリになります)へ解凍します。
解凍すると、以下のようなファイルが作成されます。
[インストール(解凍)先ディレクトリ]
- depends.exe
- depends.dll
- depends.chm
上記の
depends.exeをエクスプローラからのダブルクリックなどで実行すれば、以下のような画面が表示されます。
コマンドラインからの実行も行いたい場合は、環境設定画面で、PATHに以下のパスを加えてあげると良いでしょう。
使ってみましょう
使い方は、いたってシンプルです。
例えば、ある実行ファイル(exe)が依存しているファイル(DLL)を検索したい場合、その実行ファイルを、Dependency Walkerの画面へドロップして開きます。
すると、以下のような画面が表示されます。(ここでは、Qtアプリケーションを開いたときの例です。)
この例では、以下のDLLにこの実行ファイルが依存していることがわかります。
- QTSCRIPT4.DLL
- QTGUI4.DLL
- QTCORE4.DLL
- KERNEL32.DLL
- MSVCR90.DLL
1 - 3までは、QtライブラリのDLLです。
4は、OSの基本ライブラリのDLLです。(通常、このDLLはOSに同梱されています)
5は、Visual C++ 2008 のRUNタイムライブラリのDLLです。
このことから、もし、この実行ファイルを配布したい場合、4を除くDLLを同梱してあげる必要があることがわかります。
インストーラを作成する上でも、必要最小限のDLLを確認するので非常に便利です。
また、逆にうまく動作しない実行ファイル(exe,dllなど)が、依存するDLLなどの不足による場合、このDependency Walkerで、同様に
ドロップすれば、必要よなる依存ファイル(DLLなど)をすべて表示してくれますので、簡単に調べることができます。
もし、そこでシステムに見当たらない場合は、以下のようにクエスションマークと対応する関数が赤く表示されますので、簡単に見つけることができます。
もし、依存ファイルが存在するのに、Dependency Walkerでは、見つからない(検出されない)場合は、
メニューの
Opetion - Configure Module Order をクリックし、以下の画面を表示します。
この画面から、依存ファイルの存在するディレクトリ名を指定して
Add Directoryボタンをクリックすると、
A user define directoryに追加されます。
設定を終えたら、
OKボタンをクリックし、保存します。
その後、リフレッシュ(F5) (View - Reflesh)で更新します。
おそらく、これで、検出されるようになると思いますが、正しく実行させるためには、先ほど設定したディレクトリを環境設定のパスにも設定すれば、正しく動作するでしょう。
コメントをどうぞ