C++ 防止钩子dll加载

C++ 防止钩子dll加载,c++,c,winapi,setwindowshookex,windows-security,C++,C,Winapi,Setwindowshookex,Windows Security,有没有一种方法可以设置进程安全权限,或者其他方法可以禁止Windows加载全局窗口挂钩DLL? 我不想禁用SetWindowsHookEx,我只想禁用进程中加载的钩子dll。您可以通过安装自己的钩子,然后不从钩子调用CallNextHookEx()来禁用所有钩子。要正确地执行此操作,您需要确保您的钩子是将要调用的第一个钩子 调用钩子的顺序似乎没有被记录下来,但通过尝试和错误检查是很容易的。只需安装来自不同进程的几个钩子,看看哪个被称为第一个。最有可能的情况是 安装的第一个钩子是第一个被调用的钩

有没有一种方法可以设置进程安全权限,或者其他方法可以禁止Windows加载全局窗口挂钩DLL?
我不想禁用SetWindowsHookEx,我只想禁用进程中加载的钩子dll。

您可以通过安装自己的钩子,然后不从钩子调用
CallNextHookEx()
来禁用所有钩子。要正确地执行此操作,您需要确保您的钩子是将要调用的第一个钩子

调用钩子的顺序似乎没有被记录下来,但通过尝试和错误检查是很容易的。只需安装来自不同进程的几个钩子,看看哪个被称为第一个。最有可能的情况是

  • 安装的第一个钩子是第一个被调用的钩子。这是一个简单的选择。只要确保尽快安装你的挂钩
  • 调用的第一个钩子是最后安装的唯一钩子。这个比较棘手。您必须始终确保您的是安装的最后一个挂钩。一种黑客的方法是创建一个线程,每隔一秒左右就会删除钩子并再次添加它

这一解决方案远非完美,考虑到订单没有记录在案,它可能在未来某个时候发生变化。钩子调用顺序也可能是完全随机的,在这种情况下,此解决方案对您没有多大好处。

好主意,但我确实想阻止钩子dll被加载。请参见此问题: