区分键盘记录器中的密码和其他类型的键盘输入
Differentiating between password and other kind of keyboard inputs in a keylogger
我正在为Windows编写一个键盘记录器。我打算用GetAsyncKeyState(KEY)和一个隐藏的控制台来获取按下的键。确定按键后,我将使用 GetForegroundWindow 获取当前聚焦窗口,并确定按下按键时哪个程序位于顶部。我还希望能够区分密码的按键和其他类型的输入。有没有办法做到这一点?如何?
我不是在编写恶意软件。这是针对高级编程课程的作业。
如果前台应用使用标准 Win32 UI 控件,请尝试以下操作:
- 使用
GetForegroundWindow()
获取前景窗口的HWND
。 - 然后使用"
GetWindowThreadProcessId()
"和"GetGUIThreadInfo()
"获取前景窗口当前聚焦的子控件。 - 然后使用
GetClassName()
检查它是否是标准EDIT
控件(在某些 UI 框架中,此检查可能会失败!可能需要使用 UI 自动化 API 来检测控件类型) - 然后使用
GetWindowLong/Ptr()
检查它是否应用了ES_PASSWORD
样式。
但是,如果前台应用未使用标准 Win32 UI 控件,和/或自定义绘制它们等,则所有投注都将关闭。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 物理键盘上的触发器按键
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 如何使用C/C++在MacOSX中获得键盘布局
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 类与私有变量的其他类之间的线程安全性
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- GlobalAlloc而不是其他分配方法
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 区分键盘记录器中的密码和其他类型的键盘输入
- 鼠标,键盘和其他HID设备的唯一标识符
- 其他语言的Qt键盘输入
- 全球安装的键盘钩可防止键盘输入其他应用程序
- 如何在 Linux 应用程序中专门使用其他键盘
- 是否有可能有一个程序将键盘输入更改为所有其他程序
- C++键盘挂钩-退出程序,但也防止密钥在其他地方被处理