病毒表现
键盘监听病毒在网吧中非常流行,它在启动后会监听用户的键盘输入事件,如果有人使用账号密码登录,那么他所按下的每一个键都会被记录下来,被发送给别有用心的人.再通过两次按键的时间差,或者根据回车、tab这些标志性按键,就可以大致推断出账号和密码.
原理分析
该病毒能够记录所有窗口的输入事件,因此基本可以确定是用了键盘钩子.钩子函数会在事件发生后第一时间收到通知并处理.这样无论用户输入了什么,病毒总能第一时间记录.
Qt实现
由于程序的特殊性,不提供完整代码和源文件.
首先注册全局键盘钩子
1 | keyHook = SetWindowsHookExA(WH_KEYBOARD_LL,keyProc,GetModuleHandle(NULL),NULL); |
实现keyProc函数
1 | LRESULT CALLBACK keyProc(int nCode,WPARAM wParam,LPARAM lParam){ |
该函数获取了按键的ascii码,并储存到list中
实际上除了这些之外,还应该检测SHIFT,CAPSLOCK,特殊字符等按键,也可以使用GetKeyState()方法来获取按键的状态.本程序仅负责记录字母和数字.
创建一个PushButton并转到click事件
1 | void Widget::on_pushButton_clicked() |
效果展示
启动之前
启动监听并在其他窗口输入密码
可以看到密码已经被记录
杀毒软件测试
本人电脑上并未安装杀毒软件,所以使用了在线测试.本次测试共51个引擎
杀毒引擎全军覆没,包括安天、金山、百度、卡巴斯基、360、迈克菲等.因为该病毒没有出现在任何病毒库中,而且也没有进行任何高危操作,包括记录键盘也仅仅是使用了window自带的API而已.
预防方法
最好的方法就是不输密码,采用扫码登录.