编程实现盗版QQ

本文介绍了如何利用编程技术,从钩子角度分析和实现盗取QQ密码的过程。通过安装键盘钩子,监听QQ登录窗口的键盘输入,从而获取用户名和密码。文章详细讲解了从枚举进程找到QQ.exe,到获取窗口句柄,创建DLL安装钩子,最后实现键盘钩子回调函数记录密码的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码下载( 附件1 )

一、思路分析

  (一) 数据包的角度 (二) 钩子角度 1. 钩子简介 2. 程序流程 ;
二、 实现过程 
  (一) 定义宏 
  (二) 枚举进程找到QQ.exe 
  (三) 枚举所有窗口,找属于QQ.exe的窗口 
  (四) 获取用户名、密码、登陆按钮的句柄 
  (五) 创建钩子用的DLL 
  (六) 安装钩子

  一直以来我对盗QQ这种技术都比较的好奇,最近为了练手,决定写一个盗QQ的程序。经过一个星期的努力,终于得到了QQ的用户名和密码,效果如下:
 


  本程序在Win2003 + QQ2005 Beta2下测试通过。下面就来分析一下整个实现过程。

  一、 思路分析
  一般这种盗QQ程序,都可以从两个角度分析。它们分别是:数据包和钩子技术。

  (一) 数据包的角度
  从这个角度入手的难度较大,这需要对QQ所用的协议非常的清楚,还要了解QQ发送的数据包采用的算法,然后把QQ发送的数据包截获下来,通过逆向分析最终得到QQ密码。由于本人对QQ所用的协议没什么研究,所以没有采用这个思路,以后有机会倒是可以试试。

  (二) 钩子角度
  平时写盗密码程序用的最多的应该就是钩子技术了,因为操作系统提供的API可以让我们很轻松的安装和卸载钩子,从而轻易得到我们想要的东西。

1. 钩子简介
  钩子是一个很形象的词,它就像一个“钩”,通过它就可以把操作系统里的消息给钩下来,经过我们处理后再发送出去。具体如下图:


  2. 程序流程
  Spy++这个工具可以让我们查看QQ登陆窗口的许多信息,如下图:
 


   从图中可以大概知道,QQ登陆窗口左上角的文字并不是直接写上去的,也就是说不能直接用FindWindow()方法得到登陆窗口的句柄。另外,双击某一个子窗口,还可以查看该窗口的风格等,本程序就是利用登陆窗口的样式不变才找到了登陆窗口的句柄。以下是程序的具体流程图:

  

 

二、 实现过程
  有了上面这个流程图后,经常写win32程序的朋友应该也能写出这种盗QQ程序的,你无妨自已写写试试,有不明白的地方可以参考我的程序。以下为我的程序的关键代码:

  (一) 定义宏
  //QQ登陆框正常情况下的风格
  #define QQLoginDlgNormalStyle  0x94CA00C4
  //QQ登陆框最小化时的风格
  #define QQLoginDlgMiniStyle  0xB4CA00C4
  //用户名下拉控件的ID
  #define QQLoginUserNameId  0x0000008A
  //密码控件文本框的ID
  #define QQLoginPasswordId  0x000000B4
  //登陆按扭的ID
  #define QQLoginButtonId         0x00003EA0

  (二) 枚举进程找到QQ.exe
  //定义PROCESSENTRY32结构
   PROCESSENTRY32 pe;
   pe.dwSize = sizeof(pe); 
   HANDLE hProcessSnap;
   //所有进程快照
   hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
   if(hProcessSnap == INVALID_HANDLE_VALUE)
   {
      printf("进程快照失败!/n");
      return -1;
   }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值