繁体   English   中英

如何使用SetWindowsHookEx挂钩Windows上的特定API?

[英]how to hook a specific API on Windows with SetWindowsHookEx?

我试图在Windows上的其他进程(我可能不知道进程ID)中挂接一个API(例如MessageBox()),我知道我必须使用SetWindowsHookEx()函数。 但是,我仍然有三个问题:

1)SetWindowsHookEx()函数可以使钩子全局,即不限于当前进程? (当其他应用程序调用此API时,它会被挂钩吗?)

2)如果我想用自己的函数替换需要连接的API,该怎么办?

3)我阅读了许多材料,并发现了术语“挂钩过程”或“挂钩功能”。 我应该如何理解? 当前,我将其用作替换API的函数(再说一遍,MessageBox)。

这不是SetWindowsHookEx的用途。 SetWindowsHookEx用于挂接到Windows消息,而不是API(例如,如果您想知道窗口何时更改大小或被创建)。

挂钩API调用更复杂,更混乱。 没有内置的方法可以做到。 您通常想找到一个图书馆来帮助您,例如Detours

您可以为此使用Deviare API Hook 使用此库,即使使用.NET,也可以将任何API插入10行代码中。与Detours的不同之处在于,您不必编写在每个过程中插入的代码。 您可以仅挂接它们就钩住所有想要的进程。 然后,您将以自己的方式接听电话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM