C ++ WH_GETMESSAGE DLL中的Hook将DLL本身注入到所有进程中

时间:2016-11-15 13:59:23

标签: c++ dll hook

我的DLL中有一个WH_GETMESSAGE Hook但是如果我将DLL注入一个进程,似乎DLL被注入到其他进程中。我不知道为什么会这样......

if(dwReason == DLL_PROCESS_ATTACH )
{
    g_pGlobals->dllModule = hModule;

在DllMain函数中存储模块

然后我用

设置钩子
m_hKeyboardHook = SetWindowsHookEx(WH_GETMESSAGE, KeyboardHook, g_pGlobals->dllModule, 0);

    MSG message;
    while (GetMessage(&message, NULL, 0, 0)) {

        TranslateMessage(&message);
        DispatchMessage(&message);
    }

    UnhookWindowsHookEx(m_hKeyboardHook);
自己看起来像这样的钩子:

LRESULT __stdcall KeyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{

 if(nCode >= 0 && nCode == HC_ACTION)
 {
     MSG* pMsg = (MSG*)lParam;

    if(pMsg->message == WM_KEYDOWN)
        g_pMenu->OnKeyPressed(pMsg->wParam);

    if (pMsg->message == WM_CHAR)
        g_pMenu->OnCharPressed(pMsg->wParam);
  }

return CallNextHookEx(g_pWindowsHooks->GetKeyboardHook(), nCode, wParam, lParam);
}

和是的g_pWindowsHooks-> GetKeyboardHook()返回m_hKeyboardHook

感谢您的帮助!

0 个答案:

没有答案