防止钩dll加载

时间:2011-10-10 23:11:46

标签: c++ c winapi setwindowshookex windows-security

有没有办法设置进程安全权限或其他一些方法来禁止Windows加载全局窗口挂钩dll? 我不想禁用SetWindowsHookEx,我只是想在我的进程中禁用加载钩子dll。

1 个答案:

答案 0 :(得分:0)

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

调用挂钩的顺序似乎没有记录,但是通过反复试验很容易。只需从不同的进程安装几个钩子,看看哪个钩子是第一个。最可能的情况是

  • 安装的第一个挂钩是第一个被调用的挂钩。这是一个简单的选择。请务必尽快安装挂钩。
  • 第一个挂钩是唯一安装的挂钩。这个更棘手。您必须始终确保您的安装是最后一个挂钩。一个hackish方法是创建一个每隔一秒左右移除钩子并再次添加它的线程。

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