【发布时间】:2010-11-02 23:05:48
【问题描述】:
我正在尝试使用 SetWindowsHookEx 来捕获对 java.dll 中 API 的调用。
所以我创建了另一个 dll,并使用 setwindowsHookEx 注入到所有其他进程中
g_hHook = SetWindowsHookEx(WH_CALLWNDPROC, JLoadSetFunc, g_hHookDll, 0)
问题如下:
在尝试捕获来自进程的调用时,我注意到我的 dll 在已经执行了几次对挂钩函数的调用后附加到该进程。
所以问题是我的挂钩机制错过了挂钩 API 的前几次调用。
请对此问题提出建议或评论以指导我。 我被这个卡住了。
【问题讨论】:
-
进程的主线程通过窗口过程接收到消息后立即加载dll。如果这发生在您要监视的函数被调用之后,您将错过一些调用。试试newgre.net/ninjectlib
-
以上问题有解决办法吗?你以前用过ninjectlib吗?稳定吗?
-
你的 DllMain 是在你所指的几个函数之后调用的吗?否则您应该能够在 Dll 主程序中挂钩/重新编写 IAT 您的注入 dll 的进程是否在目标进程之后启动?