兴趣所致,做些学习笔记.
QQ密码框从简单到复杂有好几套措施防止键盘记录.
第一层,最简单的.设置一个定时器.大概0.5秒定时用keybd_event 发送虚拟键盘消息.混淆记录.
这一层最容易实现也最容易破解.只需要在监听程序中HOOK WH_KEYBOARD_LL,在处理函数中检测flag是否有 LLKHF_INJECTED 标志位即可.
在写监听程序的时候遇到一个问题.WH_KEYBOARD_LL 是系统级别的钩子.那是不是必须要做成DLL注入到运行的程序中呢?
看到MSDN有一段是This hook is called in the context of the thread that installed it.
这个描述是说这个HOOK是在安装钩子的线程的上下文中运行的.
系统钩子必须做成DLL是因为需要在其他进程运行我们的代码.
这两者是相冲突的.
看看MSDN中的描述 The WH_KEYBOARD_LL hook enables you to monitor keyboard input events about to be posted in a thread input q