44

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

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

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

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

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

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

4

4 に答える 4

30

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

プロセスモニター

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

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

于 2008-11-22T12:18:55.617 に答える
13

さらに Google で検索すると、探していたWinAPIOverride32が見つかりました。次のようなテキストファイルを書き込むことができます。

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

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

于 2008-11-22T13:39:54.753 に答える