3

単一の(C ++コンパイル済み)DLLファイルを検査し、Win32関数がそれを呼び出すものを見つける方法はありますか?

ファイルがありMyDll.dllます。このdllのどこかに、Windowsレジストリから情報を取得しているコードがあります。

DLLがアクセスしているレジストリキーを見つける方法はありますか?

4

3 に答える 3

3

DLLを実行する必要があります。そうすると、Sysinternals(現在はMicrosoftの一部)Process Monitorは、プロセスによって行われたすべてのレジストリアクセスを表示し、それぞれのスタックトレースをキャプチャします(これを使用して、そのDLLから行われた呼び出しを見つけることができます)。

于 2013-02-23T00:53:23.180 に答える
3

DLLのPEImportsテーブルにアクセスして、DLLが静的にリンクするWin2 API関数を判別できますが、これは、関数がDLLのコードで実際に呼び出されることを保証するものではなく、動的にロードされるWin32API関数も考慮していません。経由GetProcAddress()

DLLがアクセスしているレジストリキーを見つけるには、次のことができます。

  1. IDAなどを使用してDLLを逆アセンブル/逆コンパイルし、、、、およびその他のレジストリ関数が呼び出されているコード内のすべての場所を確認しRegOpenKeyEx()ますRegQueryValueEx()
  2. DLLをメモリにロードし、レジストリ関数のインポートに動的にパッチを適用して、入力パラメータ値をインターセプトできるようにするアプリを作成します。
  3. Benが提案したように、SysInternalsProcessMonitorを使用します。
于 2013-02-23T01:00:18.930 に答える
0

HeaventoolsSoftwareのPEExplorerがあります。

エクスポート関数リストビューアには、他のアプリケーションから呼び出される可能性のある関数が表示されます。

詳細については、特にDLLエクスポートビューアのページを参照してください。

于 2014-07-02T14:07:39.253 に答える