You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用WinAPI全局低级键盘钩子?密码场景下的安全需求

禁用全局低级键盘钩子以阻止密码输入时的键盘监听

首先明确:Windows系统没有直接提供禁用全局低级键盘钩子的官方API——这类钩子属于系统级机制,设计初衷是支持辅助工具等合法系统增强功能。但针对密码输入场景,有几种可行方案可降低键盘记录风险:

一、使用Windows安全输入框架(Secure Input)

Windows 10 1607及以上版本提供的SetWindowDisplayAffinityAPI,可将窗口标记为仅能在当前显示器显示,系统会自动拦截针对该窗口的低级键盘钩子监听:

  • 调用SetWindowDisplayAffinity(hwnd, WDA_MONITOR),需确保目标窗口处于前台焦点;
  • 密码输入完成后,调用SetWindowDisplayAffinity(hwnd, WDA_NONE)恢复正常状态。

二、用DirectInput捕获键盘输入

DirectInput绕过Windows消息队列,直接从驱动层获取键盘数据,低级键盘钩子无法捕获这类输入:

  • 初始化DirectInput设备时,设置DISCL_EXCLUSIVE | DISCL_FOREGROUND标志,独占当前焦点窗口的键盘输入;
  • 注意:该方案需要手动处理键盘布局映射,且无法捕获Win键、Ctrl+Alt+Del等系统快捷键。

三、自定义密码输入控件的权限限制(不推荐)

  • 提升进程权限至SE_DEBUG_NAME,遍历系统中的低级键盘钩子进程,强制终止可疑进程——但这种方法容易误杀合法辅助工具,还可能触发系统安全软件拦截;
  • 或通过OpenProcess配合TerminateProcess终止已知键盘记录进程,但兼容性差,无法应对未知钩子程序。

四、osk.exe的优化补充

若使用屏幕键盘,可配合SetWindowDisplayAffinity标记osk窗口,同时确保你的应用窗口处于前台,进一步降低钩子捕获输入的概率。

关键提示

没有100%绝对的方法能阻止所有键盘记录程序,尤其是内核级钩子或硬件级键盘记录器,上述方案仅能拦截用户态的低级键盘钩子。另外,密码输入完成后需立即恢复系统正常状态,避免影响其他应用功能。

内容的提问来源于stack exchange,提问作者PhilCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 15:42:04