簡體   English   中英

Windows掛鈎和Dll加載

[英]Windows Hooking and Dll Loading

我正在研究改造一個舊的CBT窗口掛鈎,並對它目前的工作方式感到有些困惑。 它的設置方式是一個DLL處理Windows掛鈎及其邏輯,而另一個程序在設置掛鈎時調用該dll。 它看起來像這樣:

LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

// this is the function the other program calls into
void InstallHook()
{
    // hdll is this dll's address
    SetWindowsHookEx(WH_CBT, HookProc, hDLL, 0);
}

然后我們有了DllMain功能。 每當調用hookProc函數時,似乎都會調用該dllmain函數,並且我不理解這種行為。 我已經檢查了fdwReason,並且由於dll進程附加事件而被調用。

每次調用HookProc時,如何觸發此事件? 因為它是一個全局鈎子,我以為windows會加載dll並且只是持久化它,在需要時調用HookProc。 但是從我所看到的情況來看,它的作用就像是在調用HookProc時隨時加載。 這是它通常如何工作,還是代碼庫的另一部分可能導致這種情況?

實現全局鈎子的DLL被加載到觸發鈎子的系統中的任何進程中。

(這正是全局鈎子必須實現為DLL的原因 - 因此可以將它們加載到其他進程中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM