【问题标题】:prevent hook dll loading防止钩子dll加载
【发布时间】:2011-12-04 21:40:42
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

  • 第一个安装的挂钩是第一个被调用的。这是一个简单的选择。请务必尽快安装挂钩。
  • 第一个调用的挂钩是唯一最后安装的。这个比较棘手。您必须始终确保您的钩子是最后安装的钩子。实现此目的的一种骇人听闻的方法是创建一个线程,每隔一秒左右就会删除钩子并再次添加它。

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

【讨论】:

  • 好主意,但我真的想阻止钩子 dll 甚至被加载
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 2019-12-17
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多