zxm1983123
驱动牛犊
驱动牛犊
  • 注册日期2005-10-20
  • 最后登录2008-01-22
  • 粉丝1
  • 关注0
  • 积分475分
  • 威望49点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
阅读:3684回复:8

对qq键盘保护技术感兴趣的一起讨论讨论把

楼主#
更多 发布于:2007-04-11 21:47
  qq从2005beta3版本中加入npkcrypt.sys这个驱动后,就不能用键盘钩子的方式来截获它的密码了,我网上看到有位仁兄说这个驱动中实际采用的是挂接了键盘中断,我用softice,windbg看了好久,也没有发现中断被更改的迹象,哪位对这个方面比较有研究的,一起讨论讨论。
   我关心的是qq键盘保护实现的技术,有人直接破坏这个驱动,然后掩盖掉qq窗口中的那个红xx的,来得到密码,虽然方法可以,但是我不敢兴趣,我的目的不是为了得到别人的密码。
   有兴趣的朋友加我,qq:71167609,msn,xmzhang@wtwh.com.cn
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
沙发#
发布于:2007-04-12 12:20
NP的东西而已~挂接方法比较和蔼~
没有战争就没有进步 X3工作组 为您提供最好的军火
zxm1983123
驱动牛犊
驱动牛犊
  • 注册日期2005-10-20
  • 最后登录2008-01-22
  • 粉丝1
  • 关注0
  • 积分475分
  • 威望49点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-17 21:08
版主大人能够稍微说的详细点么?
zzzevazzz
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2020-06-29
  • 粉丝0
  • 关注0
  • 积分1008分
  • 威望242点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2007-04-18 00:21
只有QQ得到键盘输入焦点时才修改IDT。

很久以前我写过一点东西,你看过没?

http://hi.baidu.com/zzzevazzz/blog/item/e42e2ef4ec6e82ee7709d735.html

NP实在是很简单的东西啦。
[b][url]http://hi.baidu.com/zzzevazzz[/url][/b]
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地下室#
发布于:2007-04-18 09:21
转过来:)

破解QQ2005Beta3的“键盘加密保护技术”2007-04-12 14:06  今天升级QQ,发现登陆界面的软键盘没有了,取而代之的是一个带金锁图标的密码框。试了两个键盘记录工具,原理分别是GetAsyncKeyState和键盘类过滤驱动,发现无效,恩,有点意思,正好用来打发时间。
  先看腾讯是怎么吹的:“QQ2005 Beta3采用了国际先进的nProtect键盘加密保护技术,能最大限度地防止用户的密码输入不被病毒、键盘记录程序所窃取,大大提高了QQ用户的帐号安全性。”
  nProtect是什么?从来没听过。还是老老实实看代码吧。既然能对付驱动级的嗅探,显然也用了驱动。对比QQ启动前后的驱动列表,很容易就定位到npkcrypt.sys。光凭这一点就让我不看好这个功能,这么容易就找到研究目标,设计者的反破解意识实在不怎么样。把驱动改名,重启系统,然后保护功能就失效了!当然,事情可没这么简单,因为这时那把金锁上多了个“禁用”图标,提醒用户保护功能已失效。
  明的不行就来暗的——代码级破解。首先看导入函数,用到了IoAttachDeviceToDeviceStack,似乎走的还是设备栈的老路。于是祭出WinDbg查看KeyboardClass0/1的设备栈,居然没有异常,那八成就是挂键盘中断了,导入的函数HalGetInterruptVector就是用来干这个的。列出所有中断向量(WinDbg没有类似SoftICE的idt命令,不爽的很),一眼就发现n个80开头的地址中有个f7开头的,哈,就是它。
  再次重启系统,先列出原先的IDT,启动QQ后还原被修改的条目,然后尝试键盘记录,无效。再看IDT,靠,又被改回去了!在这个中断向量的地址上设内存读写断点,只断到了读操作,却没有写操作。但明明就被改回去了啊。郁闷了一分钟之后,我开始看驱动的反汇编代码。从被断到的读操作开始跟踪,我发现读到的值被保存在全局变量里,而所有对这个变量的操作中,几乎都是赋值,只有一个cmp指令,比较保存的值和读取的值,如果不同就关中断,然后修改成QQ自己的中断服务地址(难怪断不到,关中断了嘛)。
  到这里问题就算解决了,把紧随cmp之后的jz改为jnz,中断向量再也不会被改回去啦,键盘记录(不管是哪种)当然也有效了,金锁还是老样子。所谓的“国际先进技术”原来只是从DOS时代就被大玩特玩的中断挂钩,钩住键盘中断后直接把ScanCode传给应用程序。如果QQ能绕过Windows的中断映射机制,控制PIC或APIC重新映射键盘中断,那还有点看头。(一个聊天工具而已,至于吗?)当然至于,因为她也许是世界上使用人数最多的聊天工具啊。
  详细的破解过程就不说了(我只是打发时间,不是存心和腾讯过不去哦),只说说一字节补丁的位置:npkcrypt.sys驱动模块(文件版本2005.6.22.1,大小20,386字节)加载基址偏移0x14b3,从0x74(jz)改为0x75(jnz),当然键盘中断向量也要还原。还有一种改法更简单,直接在QQ的键盘中断服务入口添加跳转指令,跳回到原服务地址。注意,这些都只是内存补丁,文件补丁比较麻烦,QQ似乎会在加载驱动前先对文件做校验。这就不是我所感兴趣的了,闪人。

   2005-11-29 补充: QQ密码输入框失去键盘焦点后,会还原中断向量。再次得到焦点时,又会修改IDT。这个修改不判断原中断向量,与前文说的jz指令无关。具体代码位置是基址偏移0x1e06(cli)至0x1e26(sti)这一段。用jmp指令跳过这段代码,IDT终于不会再被改了。实际破解时,还是在QQ的中断服务入口加jmp的办法简便易行。

   2006-01-23 补充:原来WinDbg是有!idt命令的,但自带的帮助文档里没有提到,我只能说——郁闷!
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
zjjmj2002
驱动小牛
驱动小牛
  • 注册日期2007-04-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望321点
  • 贡献值0点
  • 好评度224点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-04-24 09:50
不过QQ与驱动之间有个简单的加密约定!恢复了0x93中断后虽然能够捕获键盘输入,但QQ收到的密码就是错误的了。想想如果用户经常输入密码都发现密码不正确,恐怕会有所怀疑罢。
zzzevazzz
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2020-06-29
  • 粉丝0
  • 关注0
  • 积分1008分
  • 威望242点
  • 贡献值0点
  • 好评度170点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2007-04-27 00:54
挂钩np的中断处理程序后,得到scan code,再还给np就行了。
[b][url]http://hi.baidu.com/zzzevazzz[/url][/b]
luohua2007
驱动牛犊
驱动牛犊
  • 注册日期2007-04-30
  • 最后登录2008-10-05
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望50点
  • 贡献值0点
  • 好评度46点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-05-07 05:07
有没有不用破解,直接在更底层获取QQ密码呢,比如说挂钩I8042驱动什么的,
刚学这个,可能说的不对,见谅
wr960204
驱动牛犊
驱动牛犊
  • 注册日期2003-02-14
  • 最后登录2016-02-24
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望49点
  • 贡献值0点
  • 好评度39点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-05-29 13:34
把驱动删掉.
删掉驱动后本来提示文字和金锁图标就换成别的了.
在应用层HOOK获取资源的API.把资源编号改过去就行了.
然后直接HOOK键盘消息就行了
游客

返回顶部