简单过QQ的nProtect键盘加密保护

转载 2007年10月14日 13:53:00
谁都知道nProtect是驱动层的键盘加密保护,
但是这个nProtect也不是时刻接管着我们的键盘,仅仅在用户输入密码的时候才真正启动,
而程序是如何获知用户开始输入密码了呢?
用简单的windows编程方法就能想到,就是处理WM_SETFOCUS消息,
一旦某控件获得焦点windows就会发送WM_SETFOCUS到那个hwnd,
而一旦那个控件失去焦点的时候,nProtect需要关闭,否则就影响到用户的其他输入动作了,很明显这就是处理WM_KILLFOCUS消息。

所以,当你发现某控件获得焦点的时候,你可以无耻的冒充windows发送WM_KILLFOCUS消息,这样nProtect就自动退出保护啦~~~
当然会有其他问题,就是那个Edit控件接收到WM_KILLFOCUS后一闪一闪的光标也停掉了,这个问题有兴趣的自行解决~~~~~

或者用其他的思路,比如你的程序直接冒充qq向它的驱动发送退出保护的消息?这需要调试他的程序来了解是发送什么消息,
我曾把他的内存中的那个消息的值给patch了然后发送个WM_KILLFOCUS叫它退出保护,然后再发送个WM_SETFOCUS,让那个控件又呈现正常的输入状态。
可是它获得WM_SETFOCUS消息后想向驱动发送开启保护的消息已经让我patch了,于是保护一直没启动。

以上是很早前我测试过的,

写这个代码的时候还记得个有趣的猫腻~~~~
郁闷我获得的密码框控件句柄总是不正确,可明明就一个可视的具有密码风格的edit控件啊~~~~~
原来,还有个透明的。何苦呢~~~

在获得正确的密码控件句柄后下面这点代码读取密码效果还不错
asterisk = (char)SendMessage(hPassWindow, EM_GETPASSWORDCHAR, 0, 0);

PostMessage(hPassWindow, EM_SETPASSWORDCHAR, 0, 0);
SendMessage(hPassWindow, WM_GETTEXT, sizeof(szPass), (LPARAM)szPass);
PostMessage(hPassWindow, EM_SETPASSWORDCHAR, asterisk, 0);

由于计算机速度太快了,人眼发现不到异常

......

在qq2007刚出来时我又好奇的测试了下,发现patch掉开启保护的消息后仍然还捕捉不到正常的按键信息,我高兴的以为是加强了nProtect了呢,

其实不是,可能他是觉得应该再保险点,再加个WH_KEYBOARD_LL钩子,这个是windows的低级键盘钩子,
当QQ的密码框获得焦点的时候nProtect如果没启动的话,那么按键的消息就会给钩子拦截,
貌似qq获得正确按键信息后就用sendinput模拟下按键事件,而这个按键的代码是假的,专门糊弄别的应用程序。

知道这个之后还不简单?
我们给SetWindowsHookEx也Hook一个就行啦。

而且这个Hook还真好hook,这API M$就是准备给人hook的,
大概就是 hotpatch吧,只是win2000下SetWindowsHookEx的首条指令却没有像mov edi,edi的,
但是SetWindowsHookExA和SetWindowsHookExW最终调用的那个内部函数却有,虽不是mov edi,edi,但mov eax,eax也一样~~~
而且定位这个函数还很容易呢~~~

就这样,驱动层的保护在应用层就完全搞定了,

如果用户电脑没安装那些较合格的主动防御软件的话,那么qq这个国际领先的密码保护就似乎形同虚设了~~~

ps: 据说beta3不是那么回事了~~~

 

QQ密码输入框(防键盘钩子)原理分析

1.网上看到的一些防星号查看器的代码大多是在后台维护一个字符串(真实的密码),界面则不显示真实的密码,这样做,维护那个字符串很费事,就因为我之前那样做过,我才在看到WM_GETTEXT后想要重做一个 ...
  • zhubosa
  • zhubosa
  • 2016年04月20日 11:51
  • 2248

键盘记录器,可截获到 QQ 的密码

虽然 QQ 的密码框经过了特殊的处理,但是通过一些特殊手段仍然可以得到输入过程中键盘输入的内容。代码仅供娱乐使用!...
  • Henzox
  • Henzox
  • 2014年06月25日 08:57
  • 10918

揭秘QQ 安全密码框的原理

现在密码的安全性越来越受到重视,那么一般所谓的安全密码框是如何实现的呢?本文以 QQ Music 为例,探讨了它安全密码框实现的原理。...
  • Henzox
  • Henzox
  • 2014年07月02日 09:36
  • 5610

QQ 键盘加密保护分析

QQ 键盘加密保护分析 让我们现在开始进入正题, QQ 键盘加密保护主要依赖的是 QQ 目录下的 3 个文件,分别是 npkcrypt.sys 、 npkcusb.sys 和 npkcrypt....
  • cdxFish
  • cdxFish
  • 2011年02月21日 15:58
  • 729

深入分析与破解QQ键盘加密保护.doc

  • 2009年03月06日 01:44
  • 128KB
  • 下载

简单文件夹加密保护隐私文件XP-WIN7通用版

  • 2010年09月29日 16:05
  • 926B
  • 下载

最简单有效也是最适合程序员的代码文件安全加密保护方法——EFS

可能很多程序员都用过EFS,至少都知道NTFS有这么个加密功能,但并不了解它,会觉得不好用,因此没有真正用起来。但一般情况下也找不着更好的加密方式,于是就裸奔了。其实EFS是非常适合给程序员做工作代码...
  • huzgd
  • huzgd
  • 2011年02月12日 22:50
  • 3259

简单之局部函数保护,加密等预防措施(动态内存)

这里介绍一种额~比较“原始”的函数保护方式,当然这里只针对局部范围函数保护措施(例如自定义函数,常见系统API等),对于有全局效验和全局数据访问的函数这里没有做相关处理(例如系统send,recv等A...
  • liuqian134
  • liuqian134
  • 2015年08月26日 14:06
  • 232

Android简单加密保护自有图片资源

作者:wzhongyu   发布:2012-06-18 17:33   分类:Android   阅读:6,120 浏览数   评论关闭   现在大部分android应用的图片资...
  • ywl102402
  • ywl102402
  • 2014年10月23日 12:22
  • 702

Swing之QQ软键盘

完全实现QQ登录界面的软件盘功能! 直接上代码,以下代码非常完整,copy后能直接运行: [java] view plain copy pac...
  • u011199063
  • u011199063
  • 2018年01月04日 11:18
  • 10
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单过QQ的nProtect键盘加密保护
举报原因:
原因补充:

(最多只允许输入30个字)