QQ密码框防键盘记录的研究笔记

news/2024/10/22 16:37:59/

兴趣所致,做些学习笔记.


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





http://www.ppmy.cn/news/152115.html

相关文章

QQ密码文件EWH.DB分析(一)

QQ在登录时,需要输入密码,密码正确方能登陆成功。基本机制是:将输入的QQ密码进行加密,采用公开的MD5算法,通过N次循环以及异或后求 反,最终计算出加密的结果,与用户的ewh.db文件中的密文比较后&…

保存QQ账号与密码

保存QQ账号与密码 创建程序 创建一个名为SavaQQ的应用程序,指定包名为cn.itcast.saveqq 导入界面图片 将保存QQ密码界面所需要的图片head.png导入到项目中的drawable文件夹中。 放置界面控件 在activity_main.xml布局文件中,放置1个ImageView控件用…

实现类似QQ记住密码的功能

记住用户的密码,一般浏览器都有这个功能,基于C/S结构的软件实现这个功能也有很多方法,这里采用简单的文件流保存用户名及密码的方法来实现这个功能。 Person类,模拟用户 using System; using System.Collections.Generic; using …

QQ密码忘记不用急 QQ找回有方法(转)

http://www.itful.com/html/apply/qq/jq/2009/0206/56.html 现在QQ号似乎已经成为网民必备的一个聊天工具,每当上网时总是习惯性的首先打开QQ再去浏览网页,QQ上更是有自己的很多重要的朋友,重要的资料,但是还是会由于某些原因&…

Android之模仿QQ保存账号密码

先写个布局文件activity_main.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_wi…

QQ密码天使v1.0开发小记

首行申明一下&#xff0c;写这个程序完全是一时的兴趣&#xff0c;是自己一个阶段学习的总结而已!程序没有发表&#xff0c;毕竟这个程序多多少少有点害人!L只所以叫“密码天使”&#xff0c;嘻嘻&#xff0c;形象撒&#xff01;让你意想不到会收到这么多ID、密码&#xff0c;自…

浅析QQ密码保护原理

好久没写博客了&#xff0c;只因为最近一段时间着手学习网络入侵与渗透这块&#xff0c;正好借了一个大学生创业孵化基地的项目&#xff0c;也申请了一个关于“蜜罐”设计的科研立项&#xff0c;准备一起给做了&#xff0c;由于刚刚踏入未知领地&#xff0c;也没什么好说的&…