web-dev-qa-db-ja.com

DLLへのアプリケーション呼び出しの監視

要するに、アプリケーションからDLLへの選択された呼び出しを監視したいのです。

ソースコードを失った古いVB6アプリケーションがあります(当時、同社はソース管理を使用していませんでした)。このアプリケーションは、サードパーティのDLLを使用します。

これをDLL新しいC++アプリケーションで使用したい。残念ながらDLL APIは部分的にしか文書化されていないため、一部の関数を呼び出す方法がわからない。私は関数シグネチャを持っています。

VB6アプリケーションはこのDLLを使用するため、複数の関数を呼び出す方法を確認したいと思います。これまで私が試したか見ました-

  1. APIHijack -各関数のC++コードを記述する必要があります。値を記録するだけなので、やり過ぎのように思えます。
  2. EasyHook -1と同じですが、.NET言語でコードを記述できます。
  3. OllyDbg with Hooker -今度はPythonで各関数のコードを記述する必要があります。また、ほとんどの関数がポインターを使用して値を渡すため、structモジュールを使用してPythonで多くの変換を行う必要があります。

関数のパラメーターを記録するだけなので、簡単な解決策が必要です。自動化されたツールはありますか。監視する機能とその署名を特定し、詳細なログファイルを取得できますか?

36
kshahar

いくつかのGoogle検索で、探していたものが見つかりました: WinAPIOverride32 。次のようなテキストファイルを作成できます。

CustomApi.dll|void NameOfFunction(long param1, double& param2);

後で、これらのファイルをプログラム内で使用して、NameOfFunctionへのすべての呼び出しを記録できます。ここで、配列と構造体パラメーターを記録する方法を理解する必要があります。

11
kshahar

「静的」ソリューション(オンデマンドでスタックトレースをキャプチャできるという意味)は、 Process Monitor になります。

Process Monitor

より動的なソリューションは ApiMonitor ですが、監視するにはアプリケーションと互換性がないために古すぎる可能性があります。試してみる価値があります。

http://www.rohitab.com/gallery/api-monitor-2-0/main-window.png

25
VonC

Visual Studioアドインランタイムフローここ

ランタイムのランタイムフローは、実行中の.NETアプリケーションの関数呼び出しと関数パラメーターを監視および記録し、スタックトレースツリーを表示します。監視にインストルメンテーションまたはソースコードは必要ありません。

3
google dev