2011-10-10 139 views
1

有沒有辦法設置進程安全權限或其他方式來禁止Windows加載全局窗口鉤子DLL? 我不想禁用SetWindowsHookEx,我只想在我的進程中禁用加載的DLL。防止掛鉤dll加載

+0

看到這個問題:http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection – shoosh

回答

0

您可以通過安裝自己的掛鉤來禁用所有掛鉤,然後不會從掛鉤中調用CallNextHookEx()。爲了正確地做到這一點,你需要確保你的鉤子將成爲第一個將被調用的鉤子。

掛鉤被調用的順序似乎沒有記錄,但很容易通過試驗和錯誤進行檢查。只需安裝來自不同進程的多個鉤子並查看哪一個首先被調用。最有可能的情況是

  • 安裝的第一個鉤子是第一個被調用的鉤子。這是簡單的選擇。只要確保儘快安裝您的掛鉤。
  • 被調用的第一個鉤子是唯一安裝的最後一個。這一個更棘手。您必須始終確保您的是已安裝的最後一個掛鉤。做這件事的方法就是創建一個線程,每隔一秒鐘或更長時間刪除鉤子並重新添加。

這個解決方案遠非完美,並且考慮到訂單沒有記錄,它可能會在將來的某個時間點發生變化。鉤子調用順序也可能是完全隨機的,在這種情況下,這種解決方案對你不會有太大的好處。

+0

好主意,但我真的想防止鉤DLL甚至是裝 –