4

SetWindowsHookEx を使用して、java.dll の API への呼び出しをキャプチャしようとしています。

だから私は別のdllを作成し、setwindowsHookExを使用して他のすべてのプロセスに注入しました

g_hHook = SetWindowsHookEx(WH_CALLWNDPROC, JLoadSetFunc, g_hHookDll, 0)

問題は次のとおりです。

プロセスからの呼び出しをキャプチャしようとしているときに、フックされた関数へのいくつかの呼び出しが既に実行された後に、dll がそのプロセスにアタッチされていることに気付きました。

したがって、問題は、私のフック メカニズムが、フックされた API の最初の数回の呼​​び出しを見逃していることです。

私を導くために、この問題について提案またはコメントしてください。私はこれにひどく立ち往生しています。

4

3 に答える 3

3

次のことをお勧めします。

  1. SetWindowsHookEx() を使用してフックを登録します
  2. SendMessage() をリモート プロセスに送信し、フックだけが理解できる特別なメッセージを送信します。
  3. フックが応答するまでこれを繰り返します
  4. フックがやり取りするコードを呼び出します

つまり、フックのインストールが完了するまで待ってから使用してください。

于 2009-06-19T00:45:42.240 に答える
0

レジストリ キーを使用してすべてのプロセスに DLL をロードする、非常に汚いハックがあります。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

于 2009-06-15T11:27:07.977 に答える