C++ 在windows中检索全局钩子链

C++ 在windows中检索全局钩子链,c++,windows,hook,C++,Windows,Hook,我需要得到Windows中全局钩子链中的函数列表,如果可能的话,还需要得到它们相应的应用程序。但是,我不知道如何从全局钩子链检索信息 据我所知,没有windows API可用于此操作,因此我认为必须通过解析钩子链链接列表来找到它们。问题是我不知道这个链接列表的数据结构和它的开始地址 有人知道windows是如何管理其全局钩子链的吗?我见过的一种方法如下所示。它被引用(小心慢服务器)。当然,疯狂的东西,不知道这将在不同的Windows版本之间进行多么好的移植。与其尝试遍历内部Windows结构,您

我需要得到Windows中全局钩子链中的函数列表,如果可能的话,还需要得到它们相应的应用程序。但是,我不知道如何从全局钩子链检索信息

据我所知,没有windows API可用于此操作,因此我认为必须通过解析钩子链链接列表来找到它们。问题是我不知道这个链接列表的数据结构和它的开始地址


有人知道windows是如何管理其全局钩子链的吗?我见过的一种方法如下所示。它被引用(小心慢服务器)。当然,疯狂的东西,不知道这将在不同的Windows版本之间进行多么好的移植。

与其尝试遍历内部Windows结构,您知道所有窗口挂钩必须有一个与之关联的加载模块,该模块已注入目标进程;如果您试图确保您自己的应用程序没有被钩住,请枚举已加载的模块列表,并查找不应该存在的模块

据我所知,没有真正的全球钩链。此外,即使桌面上的钩子链也与应用程序无关。他们在注入的DLL中调用DLL函数。在windows中似乎存在一个真正的全局钩子链。没有记录在案的方法来做到这一点。如果你开始挖掘未记录的东西,那么你可能会停止在未来版本的Windows中工作。(你也会给Windows兼容性团队带来噩梦。)无论如何,你为什么需要知道这些?谢谢你的帮助。我看过这个博客,它给了我一个概述,但我认为代码可能更有用。现在,我正在尝试阅读汇编代码并在win7下构建它。这对您有什么帮助?您应该如何确定应该存在什么?如果我正确地解释了他的问题,他希望函数指针自己运行应用程序,在你的机器上列出一个模块列表,然后这些模块应该在那里。没有办法知道什么是“应该”在那里。有很多全局注入DLL的应用程序不执行窗口钩子。@Mike我们不知道为什么OP只寻找钩子,而不寻找任何可以改变程序行为的东西。如果他们正在寻找任何可以改变程序行为的东西,那么注入的DLL就像钩子一样不受欢迎。