DLL Export Viewerとは?DLLファイルの中身を覗けるフリーソフトを徹底解説

プログラミング・IT
スポンサーリンク

DLL Export Viewerって何?まずは基本から理解しよう

DLL Export Viewerは、DLLファイルに含まれている関数の一覧を表示してくれる無料ツールです。

NirSoftという、便利なWindowsユーティリティツールをたくさん作っている会社が提供しています。

そもそもDLL(Dynamic Link Library)って何かというと、Windowsで使われる「部品集」のようなファイルなんです。プログラムが動くときに必要な機能を、このDLLから借りてきて使う仕組みになっています。

例えば、複数のアプリケーションが「ファイルを開く」という同じ機能を使いたいとき、それぞれのアプリに同じコードを書くのは無駄ですよね。そこで、共通の機能をDLLファイルにまとめておいて、必要なときに呼び出すわけです。

DLL Export Viewerが必要になる場面とは

プログラム開発をしている人にとって、DLLファイルの中にどんな関数が入っているかを知りたい場面は意外と多いんです。

デバッグ作業をするとき

アプリケーションが予期しない動作をする原因を探るとき、DLLファイルのどの関数が呼ばれているのかを調べる必要があります。

DLL Export Viewerを使えば、関数のメモリアドレスをコピーしてデバッガーに貼り付け、ブレークポイントを設定できます。これにより、その関数が呼ばれた瞬間にプログラムを一時停止させて、問題を調査できるんですね。

外部DLLを利用するとき

他の人が作ったDLLファイルを自分のプログラムで使いたいとき、そのDLLがどんな機能(関数)を提供しているのかを確認する必要があります。

システムの挙動を理解したいとき

Windowsのシステムファイル(DLL)がどんな機能を持っているのか知りたい場合にも役立ちます。

DLL Export Viewerの主な機能

エクスポート関数の一覧表示

指定したDLLファイルから、外部に公開されている関数(エクスポート関数)の一覧を表示します。

関数名だけでなく、メモリ上のアドレスや序数(オーディナル)といった詳細情報も確認できるんです。

複数のスキャン方法に対応

単一のDLLファイルを指定するだけでなく、以下のような方法で情報を取得できます。

  • 実行中のプロセスから読み込まれているDLLを調査
  • システムにインストールされているすべてのDLLをスキャン
  • 特定のフォルダ内のDLLファイルをまとめて調査
  • ワイルドカード(*や?)を使った複数ファイルの検索

データのエクスポート機能

取得した関数の一覧は、以下の形式で保存できます。

  • テキストファイル(.txt)
  • HTMLファイル(.html)
  • XMLファイル(.xml)
  • CSVファイル(.csv)

また、クリップボードにコピーして、Excelなどの表計算ソフトに貼り付けることも可能です。

デバッガー連携機能

関数のメモリアドレスを簡単にコピーできるので、WinDbgなどのデバッガーで使用するブレークポイント設定に活用できます。

例えば、メッセージボックスを表示する関数(MessageBoxA)のアドレスにブレークポイントを設定すれば、どこでメッセージボックスが呼ばれているか追跡できるわけです。

Google検索機能

分からない関数名を右クリックすると、Googleで検索できる機能も付いています。関数の用途を調べたいときに便利ですね。

DLL Export Viewerの使い方

インストールは不要

DLL Export Viewerは、ダウンロードしてZIPファイルを解凍するだけで使えます。

32bit版と64bit版が用意されているので、自分のWindowsのバージョンに合ったものを選びましょう。

基本的な操作手順

DLL Export Viewerを起動すると、シンプルなウィンドウが表示されます。

メニューバーから「File」→「Select DLL File」を選択して、調べたいDLLファイルを指定するだけです。

すると、そのDLLに含まれるエクスポート関数の一覧が、表形式で表示されます。

表示される情報の意味

一覧表には、以下のような情報が表示されます。

  • Function Name(関数名):関数の名前です
  • Address(アドレス):メモリ上の仮想アドレスです
  • Relative Address(相対アドレス):ベースアドレスからの相対位置です
  • Ordinal(序数):関数を識別するための番号です
  • Filename(ファイル名):DLLファイルのパスです

プロセスから読み込まれているDLLを調査する

「File」→「Select Process」を選択すると、現在実行中のプロセスの一覧が表示されます。

調べたいプロセスを選択すると、そのプロセスが使用しているすべてのDLLのエクスポート関数を一覧表示できます。

エクスポート関数とは何か

ここで少し専門的な話になりますが、エクスポート関数について説明しておきましょう。

DLLファイルの中には、たくさんの関数が含まれています。しかし、そのすべてが外部から使えるわけではありません。

外部に公開されている関数を「エクスポート関数」と呼びます。

DLLファイルには「エクスポートテーブル」という、公開している関数の目録が記録されているんです。DLL Export Viewerは、このエクスポートテーブルを読み取って表示しているわけですね。

関数の識別方法

エクスポート関数は、2つの方法で識別できます。

名前による識別

「MessageBoxA」のように、分かりやすい名前で関数を呼び出す方法です。一般的にはこちらが使われます。

序数(オーディナル)による識別

関数に番号を付けて識別する方法です。名前よりも処理が高速ですが、どの番号がどの関数なのか覚えにくいデメリットがあります。

他のツールとの違い

DLLの情報を調べるツールは他にもあります。代表的なものと比較してみましょう。

Dependency Walker

以前は定番のツールでしたが、最近のVisual Studioには付属しなくなりました。また、新しいWindowsの機能に対応していない場合があります。

DLL Export Viewerは、現代のWindowsにもしっかり対応しているので安心です。

DUMPBIN(Visual Studio付属)

Visual Studioをインストールしている人なら使えるコマンドラインツールです。

コマンドプロンプトから「dumpbin /exports ファイル名.dll」と入力すると、エクスポート関数の一覧が表示されます。

ただし、GUIがないので、視覚的に見づらいというデメリットがあります。

PE Explorer(有料ソフト)

より高機能なPE(Portable Executable)ファイル解析ツールです。

エクスポート関数だけでなく、インポート関数やリソース情報なども詳しく調べられますが、有料です。

無料で手軽に使いたいなら、DLL Export Viewerが最適でしょう。

DLL Export Viewerの実際の活用例

例1:メッセージボックスの呼び出し元を特定する

アプリケーションで予期しないメッセージボックスが表示される問題を調査するとします。

DLL Export Viewerで「user32.dll」を開き、MessageBoxA、MessageBoxW、MessageBoxExAなどの関数のアドレスを取得します。

これらのアドレスにデバッガーでブレークポイントを設定すれば、メッセージボックスが呼ばれた瞬間に処理を止めて、呼び出し元のコードを特定できます。

例2:サードパーティDLLの機能を調査する

ドキュメントが不十分な外部DLLを使いたい場合、DLL Export Viewerで関数の一覧を確認できます。

関数名から用途を推測したり、Google検索機能を使って詳細を調べたりすることで、使い方のヒントが得られるでしょう。

例3:システムDLLの依存関係を調べる

自作プログラムが、どのWindowsシステムDLLに依存しているかを調査したいとき、実行中のプロセスをスキャンすれば、使用しているDLLと関数の一覧が分かります。

DLL Export Viewerを使う際の注意点

32bit版と64bit版の使い分け

32bit版のDLL Export Viewerは32bitのDLLしか解析できません。同様に、64bit版は64bitのDLLにしか対応していません。

自分が調べたいDLLのアーキテクチャに合ったバージョンを使用しましょう。

管理者権限が必要な場合がある

システムファイルやプロセスを調査する場合、管理者権限で実行する必要があることがあります。

右クリックして「管理者として実行」を選択してください。

パスに日本語が含まれていると動作しない場合がある

DLLファイルのパスに日本語(2バイト文字)が含まれていると、正常に動作しないことがあります。

エクスポート関数が表示されない場合は、DLLファイルを英数字だけのパスにコピーしてから試してみてください。

すべての情報が表示されるわけではない

DLL Export Viewerは、エクスポートテーブルに記載されている情報のみを表示します。

関数のパラメータ(引数)の型や数、戻り値の型などは表示されないので、別途調査が必要です。

コマンドラインモードも使える

DLL Export Viewerは、GUIだけでなくコマンドラインからも実行できます。

自動化スクリプトに組み込みたい場合や、大量のDLLファイルを一括処理したい場合に便利です。

基本的なコマンド形式は以下の通りです。

dllexp.exe /stext 出力ファイル名.txt DLLファイル名.dll

これで、指定したDLLのエクスポート関数の一覧がテキストファイルに保存されます。

どんな人に役立つツールか

プログラマー・ソフトウェア開発者

自作プログラムのデバッグや、外部DLLの調査に欠かせないツールです。

セキュリティ研究者

マルウェア解析や脆弱性調査の際、DLLファイルの構造を理解するのに役立ちます。

システム管理者

Windowsシステムの動作を深く理解したい場合、システムDLLの構造を調べることで知識が深まります。

技術サポート担当者

ソフトウェアの問題を調査する際、DLLの依存関係やバージョンを確認するのに使えます。

まとめ

DLL Export Viewerは、DLLファイルに含まれるエクスポート関数を簡単に確認できる、シンプルで強力なツールです。

無料で提供されているにもかかわらず、プログラム開発やデバッグ作業において非常に役立つ機能を備えています。インストール不要で、ダウンロードしてすぐに使えるのも魅力的ですね。

Windows対応は幅広く、Windows 98からWindows 10、11まで動作します(32bit版と64bit版があります)。GUIとコマンドライン両方に対応しているため、手動作業でも自動化スクリプトでも活用できるでしょう。

プログラム開発者にとって、DLLファイルの中身を理解することは、トラブルシューティングやシステム理解の第一歩です。DLL Export Viewerは、その手助けをしてくれる頼れるツールと言えます。

NirSoftの公式サイトから無料でダウンロードできるので、プログラム開発に携わっている方は、ぜひ一度試してみてください。

コメント

タイトルとURLをコピーしました