防止钩子DLL加载

prevent hook dll loading

本文关键字:DLL 加载      更新时间:2023-10-16

是否有一种方法来设置进程安全权限或其他方式来禁用Windows从加载全局窗口钩子dll ?我不想禁用SetWindowsHookEx,我只想在我的进程中禁用钩子dll加载

你可以通过安装你自己的钩子,然后不从你的钩子调用CallNextHookEx()来禁用所有的钩子。要做到这一点,你需要确保你的钩子将是第一个被调用的钩子。

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

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

这个解决方案还远远不够完美,考虑到顺序没有文档化,它可能会在将来的某个时候发生变化。也有可能钩子调用顺序是完全随机的,在这种情况下,这种解决方案不会有太大的好处。