在键盘记录器中区分密码和其他类型的键盘输入

Differentiating between password and other kind of keyboard inputs in a keylogger

我正在为 windows 编写键盘记录器。我打算用 GetAsyncKeyState(KEY) and a hidden console. After a key press has been identified I will get the current focused windows with GetForegroundWindow 获取按下的键,并确定按下该键时哪个程序在最上面。我还希望能够区分密码按键和其他类型的输入。有办法吗?怎么样?

我不是在写恶意软件。这是高级编程课程的作业。

如果前台应用程序使用标准 Win32 UI 控件,请尝试以下操作:

  • 使用GetForegroundWindow()得到前景window的HWND
  • 然后使用 GetWindowThreadProcessId()GetGUIThreadInfo() 获取前景 window 当前聚焦的子控件。
  • 然后使用 GetClassName() 检查它是否是标准 EDIT 控件(此检查在某些 UI 框架中可能会失败!您可能必须使用 UI Automation API检测控件类型)
  • 然后使用 GetWindowLong/Ptr() 检查它是否应用了 ES_PASSWORD 样式。

但是,如果前台应用程序没有使用标准的 Win32 UI 控件,and/or 正在自定义绘制它们,等等,那么所有赌注都会被取消。