QQ密码框防键盘记录的研究笔记
兴趣所致,做些学习笔记.
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 queue.
也就是说这个钩子是在原始输入线程将消息放入线程输入队列之前调用的.这样就能理解了.
WH_MOUSE_LL 和 WH_KEYBOARD_LL 属于全局钩子,A线程安装钩子后,系统在将输入信息添加到某(焦点)线程前,通过SendMsg给A线程发消息.进入钩子函数.
并不使用注入,系统切换上下文到A线程,运行完再切换回去.所以这两个钩子是不需要做成DLL的系统钩子.
第二层.QQ本身也HOOK了WH_KEYBOARD_LL,而且为了保持自身的HOOK在最前,有个定时器不断的UNHOOK,HOOK.
实验下来发现,这样做有可能在UNHOOK和HOOK之间,原始输入线程插入了输入消息,此时的输入消息就不会被HOOK到.这种漏消息的情况就没法处理了.
但这需要很快的非正常按键操作.正常操作一般是不会有问题的
第三层.随机的修改发送按键消息.此部分消息在QQ的钩子函数中修改了 LLKHF_INJECTED 标志位.
随机规则大概是..激活控件时有可能触发,按下按键时有可能触发或停止.
触发后定时发送.分析数据发现,在一部分按键事件中.KBDLLHOOKSTRUCT 中的 time 很大.很不合理.想来是QQ用此数据来做真假消息的判断.
第四层.在钩子函数中随机的修改键值再往下发.这样即使别的程序能屏蔽掉所有虚假消息,也无法得到所有真实的键值.
第五层.QQ HOOK 了 WH_DEBUG 消息保证其他HOOK没法注入到进程,这里为了保证总在最前,可以不断的UNHOOK,HOOK.
补充一下.DEBUG钩子不能监视HOOK WH_KEYBOARD_LL和WH_MOUSE_LL
第五层.混淆代码.有备份代码..
具体参考
http://bbs.pediy.com/showthread.php?t=133943
QQ密码框防键盘记录的研究笔记相关推荐
- 矛与盾:用VB打造驱动级键盘记录器,能过QQ密码框(源码)
信息监控与隐私保护永远是一对矛盾,在对付各种信息窃取软件上,新技术总是层出不穷.本文介绍一种古老的键盘记录器技术,确实很古老,DOS时代人们就在用了,但是现在它仍然很有效,在键盘过滤驱动失效的情况下, ...
- QQ密码输入框(防键盘钩子)原理分析
1.网上看到的一些防星号查看器的代码大多是在后台维护一个字符串(真实的密码),界面则不显示真实的密码,这样做,维护那个字符串很费事,就因为我之前那样做过,我才在看到WM_GETTEXT后想要重做一个 ...
- 对QQ密码框的防盗机制的探索
在半年前的暑假,刚刚接触到了Hook,就想试试用Hook能不能获取到QQ的密码,但是得到的是一堆乱码,所以也就没再继续了,因为当时我只是只菜鸟:半年后,我成了大一点的菜鸟,但我又来挑战QQ的密码框,因 ...
- 微信去除 防欺诈盗号请勿支付或输入qq密码 以及 防欺诈或盗号请不要输入qq密码 的方法...
本文介绍如何去除微信顶部的"防欺诈盗号,请勿支付或输入qq密码".或 "防欺诈或盗号,请不要输入qq密码"如图所示. 一.微信认证 目前只有已经通过微信认 ...
- C# WinIo获取键盘记录
C# WinIo获取键盘记录 网上搜了很多关于WinIo的调用方法,但大部分都是模拟按键,小部分获取记录,但要么有问题要么别的语言写的看不懂,那就只好自己想. 运行环境:WIN7 X86,WinIo3 ...
- 键盘记录工具的制作 qq密码键盘记录器
现在的计算机键盘除开传统的PS/2键盘以外另有USB键盘,本文只先容普通的PS/2键盘,是以本文的举出例子代码也只撑持PS/2键盘,对USB键盘无效.我们懂得计算机使得到键盘的信息,必需与键盘举行通信 ...
- 记录研究截取QQ密码的几点心得
1 根据网上的文章,至少到QQ2013版本时,QQ主要通过以下几个方式实现密码保护: a 登录窗体和密码输入框分离为两个进程 b 设置调试钩子和低级键盘钩子阻止HOOK,所以必须干掉两个钩子 c 设置 ...
- c语言可乐,★★PC可乐吧系列教程之 -- QQ用户小心!C语言实现QQ密码大盗★★
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 return FALSE; } 分别键盘HOOK,和界面部分消息处理的HOOK g_hProc = SetWindowsHookEx(WH_CALLWND ...
- c语言qq加密具体思路,悄悄告诉你:C语言如何实现QQ密码大盗
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一般的盗密码的软件的软件都是通过监视键盘来获得密码,这样操作比较方便,但是这样也存在一定问题,密码有的时候不是很准确,因为有的人输入密码并不是从前到后输入 ...
最新文章
- 太赞了!机器学习基础核心算法:贝叶斯分类!(附西瓜书案例及代码实现)
- Java--图片浏览器
- android Json处理换行符
- 软件包管理 之 Fedora / Redhat 软件包管理指南
- LeetCode 1691. 堆叠长方体的最大高度(排序+最大上升子序DP)
- 一种被忽视的构造和整数溢出重现
- 用php判断大月小月,php 获取月第一天和最后一天 | 学步园
- html中注释有几种_历史尝试:小白HTML学习笔记(2)
- 稀疏内存模型sparsemem memory model | 文章
- [USACO13NOV]Farmer John has no Large Brown Cow【状压 / 模拟】
- 常见算法基础题思路简析(六)-字符串篇
- 论文降重修改句子软件
- 《ROS2机器人建模URDF》8.2RVIZ2可视化移动机器人模型
- Oracle递归查询的原理
- 怎么把数据文件上传云服务器,怎样把数据上传到云服务器
- dbms_xplan
- JavaScript mongodb(数据库)复杂值
- 伦敦大学计算机图形学博士,GAMES Webinar 2018 -73期(Siggraph Asia 2018论文报告)| 王杨抟风(伦敦大学学院),李昌健(香港大学)...
- 单片机开发与Linux开发区别
- SVN入门及配置使用(多平台)