记录研究截取QQ密码的几点心得

1 根据网上的文章,至少到QQ2013版本时,QQ主要通过以下几个方式实现密码保护:

   a 登录窗体和密码输入框分离为两个进程

   b 设置调试钩子和低级键盘钩子阻止HOOK,所以必须干掉两个钩子

   c 设置钩子代码后有检测代码以阻止篡改setwindowshookex的参数,所以必须nop掉检测代码

   d 运行时拷贝代码保护c中的检测代码,所以必须HOOK掉memcpy

2 自己通过registerhotkey这个API成功地在不修改QQ运行时代码的情况下截获了用户名,但是截获密码失败。过程如下:

  step1 通过registerhotkey设置[0-9a-zA-Z]为热键,截取键盘输入;但是键盘输入如果作为热键则无法作为正常输入,所以必须通过step2-4模拟键盘输入

  step2 截取后马上unregister解除获取字符的热键绑定 ,为step3做准备

  step3 通过keybd_event实现模拟键盘输入

  step4 重新registerhotkey该字符,等待下一次输入

  在截获QQ用户名输入框输入时,一切OK。截取QQ密码框输入后,keybd_event模拟输入时,直接发生多次输入的异常。想必QQ是连keybd_event这个API也通过某种方式截获了,防止模拟输入。

3 总结:从用户态获取密码太TMD蛋疼了。要去除QQProtect保护,要反汇编,要运行时修改QQ代码,还要防止QQ版本变更导致老方法失灵。直接上驱动从内核态获取行不?

   经实践,通过键盘过滤驱动能完美的截获QQ运行时敲击键盘的一系列输入,无视QQProtect,无视360。载入驱动可以使用DriverStudio的Monitor,查看输出可以使用DbgView。只要QQ不涉及驱动层的保护,那当然也就无视QQ版本变更。

  

  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值