gpt4 book ai didi

c++ - UnhookWindowsHookEx 是否从 Hook 的应用程序中卸载线程特定 Hook 的库?

转载 作者:行者123 更新时间:2023-11-30 05:41:13 25 4
gpt4 key购买 nike

假设我有一个 Windows Hook 程序,我正在使用 SetWindowsHookEx 在特定线程上安装它。当我随后调用 UnhookWindowsHookEx 时,我的 DLL 是否包含从目标应用程序卸载的 Hook 过程?

大部分documentation我发现在这个主题上似乎暗示调用 SetWindowsHookEx 会导致在目标应用程序中隐式调用 LoadLibrary。此外,文档非常小心地指出,在 global Windows Hook 上调用 UnhookWindowsHookEx 不会隐式地将库从可能已加载它的所有进程中释放出来,但少于即将发布关于线程特定 Hook 的主题。我要么没有足够仔细地阅读文档,要么我的网络搜索能力让我失望了。

最佳答案

线程特定钩子(Hook)和全局钩子(Hook)之间没有区别。线程 ID 参数只是一个过滤器,用于确定 Hook 的应用位置 - 它不会更改 Hook 规则。

因此要么线程 ID 参数用于不同的进程并且适用与全局情况相同的规则 - 您不能安全地将 FreeLibrary 调用注入(inject)另一个进程,要么线程 ID 是您的进程的一部分,没有理由调用 LoadLibary,因为 DLL 在调用 SetWindowsHookEx 之前已经加载。 (或者您为没有 DLL 的实例传递了 NULL)

我怀疑文档使用“全局”表示进程外,使用“线程”表示进程中,因为这是正常情况。 Hook 另一个进程的单个线程是罕见的事件(但似乎得到支持。参见 remarks 。)'

这当然只是阅读文档的字里行间。

关于c++ - UnhookWindowsHookEx 是否从 Hook 的应用程序中卸载线程特定 Hook 的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31253796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com