DLLへのアプリケーション呼び出しの監視
-
10-07-2019 - |
質問
要するに、アプリケーションからDLLへの選択された呼び出しを監視したい。
ソースコードを失った古いVB6アプリケーションがあります(会社はその時点でソース管理を使用していませんでした。)このアプリケーションは、サードパーティのDLLを使用します。
このDLLを新しいC ++アプリケーションで使用したい。残念ながら、DLL APIは部分的にしか文書化されていないため、一部の関数を呼び出す方法がわかりません。関数シグネチャを持っています。
VB6アプリケーションはこのDLLを使用しているため、複数の関数を呼び出す方法を確認したいと思います。これまでのところ、私は試してみたか見ました-
- APIHijack -各関数のC ++コードを記述する必要があります。値を記録するだけでよいので、やり過ぎのようです。
- EasyHook -1と同じですが、.NET言語でコードを記述できます。
- OllyDbg と uHooker -今度はPythonで各関数のコードを記述する必要があります。また、ほとんどの関数はポインターを使用して値を渡すため、Pythonでは
struct
モジュールを使用して多くの変換を行う必要があります。
関数のパラメーターを記録するだけなので、簡単な解決策が必要です。自動化されたツールはありますか。監視する機能とその署名を確認して、詳細なログファイルを取得できますか?
解決 2
さらにいくつかのGoogle検索で、探していたものが見つかりました: WinAPIOverride32 。次のようなテキストファイルを作成できます。
CustomApi.dll|void NameOfFunction(long param1, double& param2);
後で、これらのファイルをプログラム内で使用して、 NameOfFunction
へのすべての呼び出しを記録できます。ここで、配列と構造体パラメーターを記録する方法を理解する必要があります。
他のヒント
「静的」ソリューション(スタックトレースをオンデマンドでキャプチャできるという意味)は、 プロセスモニター 。
より動的なソリューションは、 ApiMonitor ですが、それと互換性がないために古すぎる可能性があります監視するアプリケーション。試してみる価値はあります。
Visual Studioアドインランタイムフロー こちら:
リアルタイムのランタイムフローは、関数呼び出しを監視および記録し、 実行中の.NETアプリケーションの関数パラメーターとスタックの表示 トレースツリー。監視にインスツルメンテーションまたはソースコードは必要ありません。