| ²é¿´: 337 | »Ø¸´: 0 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
sdlj8051½ð³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
[ת]Hook³õ²½
|
||
|
»ù±¾¸ÅÄî ¹³×Ó(Hook)£¬ÊÇWindowsÏûÏ¢´¦Àí»úÖÆµÄÒ»¸öƽ̨,Ó¦ÓóÌÐò¿ÉÒÔÔÚÉÏÃæÉèÖÃ×Ó³ÌÒÔ¼àÊÓÖ¸¶¨´°¿ÚµÄijÖÖÏûÏ¢£¬¶øÇÒËù¼àÊӵĴ°¿Ú¿ÉÒÔÊÇÆäËû½ø³ÌËù´´½¨µÄ¡£µ±ÏûÏ¢µ½´ïºó£¬ÔÚÄ¿±ê´°¿Ú´¦Àíº¯Êý֮ǰ´¦ÀíËü¡£¹³×Ó»úÖÆÔÊÐíÓ¦ÓóÌÐò½Ø»ñ´¦ÀíwindowÏûÏ¢»òÌØ¶¨Ê¼þ¡£ ¹³×Óʵ¼ÊÉÏÊÇÒ»¸ö´¦ÀíÏûÏ¢µÄ³ÌÐò¶Î£¬Í¨¹ýϵͳµ÷Ó㬰ÑËü¹ÒÈëϵͳ¡£Ã¿µ±Ìض¨µÄÏûÏ¢·¢³ö£¬ÔÚûÓе½´ïÄ¿µÄ´°¿Úǰ£¬¹³×Ó³ÌÐò¾ÍÏȲ¶»ñ¸ÃÏûÏ¢£¬Ò༴¹³×Óº¯ÊýÏȵõ½¿Ø ÖÆÈ¨¡£Õâʱ¹³×Óº¯Êý¼´¿ÉÒÔ¼Ó¹¤´¦Àí£¨¸Ä±ä£©¸ÃÏûÏ¢£¬Ò²¿ÉÒÔ²»×÷´¦Àí¶ø¼ÌÐø´«µÝ¸ÃÏûÏ¢£¬»¹¿ÉÒÔÇ¿ÖÆ½áÊøÏûÏ¢µÄ´«µÝ¡£ -------------------------------------------------------------------------------- ÔËÐлúÖÆ 1¡¢¹³×ÓÁ´±íºÍ¹³×Ó×ӳ̣º ÿһ¸öHook¶¼ÓÐÒ»¸öÓëÖ®Ïà¹ØÁªµÄÖ¸ÕëÁÐ±í£¬³ÆÖ®Îª¹³×ÓÁ´±í£¬ÓÉϵͳÀ´Î¬»¤¡£Õâ¸öÁбíµÄÖ¸ÕëÖ¸ÏòÖ¸¶¨µÄ£¬Ó¦ÓóÌÐò¶¨ÒåµÄ£¬±»Hook×ӳ̵÷ÓõĻص÷º¯Êý£¬Ò²¾ÍÊǸù³×ӵĸ÷¸ö´¦Àí×ӳ̡£µ±ÓëÖ¸¶¨µÄHookÀàÐ͹ØÁªµÄÏûÏ¢·¢Éúʱ£¬ÏµÍ³¾Í°ÑÕâ¸öÏûÏ¢´«µÝµ½Hook×ӳ̡£Ò»Ð©Hook×ӳ̿ÉÒÔÖ»¼àÊÓÏûÏ¢£¬»òÕßÐÞ¸ÄÏûÏ¢£¬»òÕßÍ£Ö¹ÏûÏ¢µÄǰ½ø£¬±ÜÃâÕâЩÏûÏ¢´«µÝµ½ÏÂÒ»¸öHook×ӳ̻òÕßÄ¿µÄ´°¿Ú¡£×î½ü°²×°µÄ¹³×Ó·ÅÔÚÁ´µÄ¿ªÊ¼£¬¶ø×îÔç°²×°µÄ¹³×Ó·ÅÔÚ×îºó£¬Ò²¾ÍÊǺó¼ÓÈëµÄÏÈ»ñµÃ¿ØÖÆÈ¨¡£ Windows ²¢²»ÒªÇó¹³×Ó×ӳ̵ÄÐ¶ÔØË³ÐòÒ»¶¨µÃºÍ°²×°Ë³ÐòÏà·´¡£Ã¿µ±ÓÐÒ»¸ö¹³×Ó±»Ð¶ÔØ£¬Windows ±ãÊÍ·ÅÆäÕ¼ÓõÄÄڴ棬²¢¸üÐÂÕû¸öHookÁ´±í¡£Èç¹û³ÌÐò°²×°Á˹³×Ó£¬µ«ÊÇÔÚÉÐÎ´Ð¶ÔØ¹³×Ó֮ǰ¾Í½áÊøÁË£¬ÄÇôϵͳ»á×Ô¶¯ÎªËü×öÐ¶ÔØ¹³×ӵIJÙ×÷¡£ ¹³×Ó×Ó³ÌÊÇÒ»¸öÓ¦ÓóÌÐò¶¨ÒåµÄ»Øµ÷º¯Êý(CALLBACK Function),²»Äܶ¨Òå³Éij¸öÀàµÄ³ÉÔ±º¯Êý£¬Ö»Äܶ¨ÒåΪÆÕͨµÄCº¯Êý¡£ÓÃÒÔ¼àÊÓϵͳ»òÄ³Ò»ÌØ¶¨ÀàÐ͵Äʼþ£¬ÕâЩʼþ¿ÉÒÔÊÇÓëÄ³Ò»ÌØ¶¨Ï̹߳ØÁªµÄ£¬Ò²¿ÉÒÔÊÇϵͳÖÐËùÓÐÏ̵߳Äʼþ¡£ ¹³×Ó×ӳ̱ØÐë°´ÕÕÒÔϵÄÓï·¨£º LRESULT CALLBACK HookProc ( int nCode, WPARAM wParam, LPARAM lParam ); HookProcÊÇÓ¦ÓóÌÐò¶¨ÒåµÄÃû×Ö¡£ nCode²ÎÊýÊÇHook´úÂ룬Hook×Ó³ÌʹÓÃÕâ¸ö²ÎÊýÀ´È·¶¨ÈÎÎñ¡£Õâ¸ö²ÎÊýµÄÖµÒÀÀµÓÚHookÀàÐÍ£¬Ã¿Ò»ÖÖHook¶¼ÓÐ×Ô¼ºµÄHook´úÂëÌØÕ÷×Ö·û¼¯¡£ wParamºÍlParam²ÎÊýµÄÖµÒÀÀµÓÚHook´úÂ룬µ«ÊÇËüÃǵĵäÐÍÖµÊǰüº¬Á˹ØÓÚ·¢ËÍ»òÕß½ÓÊÕÏûÏ¢µÄÐÅÏ¢¡£ 2¡¢¹³×ӵݲװÓëÊÍ·Å£º ʹÓÃAPIº¯ÊýSetWindowsHookEx()°ÑÒ»¸öÓ¦ÓóÌÐò¶¨ÒåµÄ¹³×Ó×ӳ̰²×°µ½¹³×ÓÁ´±íÖС£SetWindowsHookExº¯Êý×ÜÊÇÔÚHookÁ´µÄ¿ªÍ·°²×°Hook×ӳ̡£µ±Ö¸¶¨ÀàÐ͵ÄHook¼àÊÓµÄʼþ·¢Éúʱ£¬ÏµÍ³¾Íµ÷ÓÃÓëÕâ¸öHook¹ØÁªµÄHookÁ´µÄ¿ªÍ·µÄHook×ӳ̡£Ã¿Ò»¸öHookÁ´ÖеÄHook×ӳ̶¼¾ö¶¨ÊÇ·ñ°ÑÕâ¸öʼþ´«µÝµ½ÏÂÒ»¸öHook×ӳ̡£Hook×ӳ̴«µÝʼþµ½ÏÂÒ»¸öHook×Ó³ÌÐèÒªµ÷ÓÃCallNextHookExº¯Êý¡£ HHOOK SetWindowsHookEx( ¡¡¡¡¡¡¡¡¡¡int idHook, // ¹³×ÓµÄÀàÐÍ£¬¼´Ëü´¦ÀíµÄÏûÏ¢ÀàÐÍ ¡¡¡¡¡¡¡¡¡¡HOOKPROC lpfn, // ¹³×Ó×ӳ̵ĵØÖ·Ö¸Õë¡£Èç¹ûdwThreadId²ÎÊýΪ0 // »òÊÇÒ»¸öÓɱðµÄ½ø³Ì´´½¨µÄÏ̵߳ıêʶ£¬ // lpfn±ØÐëÖ¸ÏòDLLÖеĹ³×Ó×ӳ̡£ // ³ý´ËÒÔÍ⣬lpfn¿ÉÒÔÖ¸Ïòµ±Ç°½ø³ÌµÄÒ»¶Î¹³×Ó×ӳ̴úÂë¡£ // ¹³×Óº¯ÊýµÄÈë¿ÚµØÖ·£¬µ±¹³×Ó¹³µ½ÈκÎÏûÏ¢ºó±ãµ÷ÓÃÕâ¸öº¯Êý¡£ ¡¡¡¡¡¡¡¡¡¡HINSTANCE hMod, // Ó¦ÓóÌÐòʵÀýµÄ¾ä±ú¡£±êʶ°üº¬lpfnËùÖ¸µÄ×Ó³ÌµÄ DLL¡£ // Èç¹ûdwThreadId ±êʶµ±Ç°½ø³Ì´´½¨µÄÒ»¸öỊ̈߳¬ // ¶øÇÒ×ӳ̴úÂëλÓÚµ±Ç°½ø³Ì£¬hMod±ØÐëΪNULL¡£ // ¿ÉÒԺܼòµ¥µÄÉ趨ÆäΪ±¾Ó¦ÓóÌÐòµÄʵÀý¾ä±ú¡£ ¡¡¡¡¡¡¡¡¡¡DWORD dwThreadId // Óë°²×°µÄ¹³×Ó×Ó³ÌÏà¹ØÁªµÄÏ̵߳ıêʶ·û¡£ // Èç¹ûΪ0£¬¹³×Ó×Ó³ÌÓëËùÓеÄÏ̹߳ØÁª£¬¼´ÎªÈ«¾Ö¹³×Ó¡£ ¡¡¡¡¡¡¡¡¡¡ ); ¡¡¡¡º¯Êý³É¹¦Ôò·µ»Ø¹³×Ó×ӳ̵ľä±ú£¬Ê§°Ü·µ»ØNULL¡£ ¡¡¡¡ÒÔÉÏËù˵µÄ¹³×Ó×Ó³ÌÓëÏß³ÌÏà¹ØÁªÊÇÖ¸ÔÚÒ»¹³×ÓÁ´±íÖз¢¸ø¸ÃÏ̵߳ÄÏûϢͬʱ·¢Ë͸ø¹³×Ó×ӳ̣¬ÇÒ±»¹³×Ó×Ó³ÌÏÈ´¦Àí¡£ ÔÚ¹³×Ó×Ó³ÌÖе÷Óõõ½¿ØÖÆÈ¨µÄ¹³×Óº¯ÊýÔÚÍê³É¶ÔÏûÏ¢µÄ´¦Àíºó£¬Èç¹ûÏëÒª¸ÃÏûÏ¢¼ÌÐø´«µÝ£¬ÄÇôËü±ØÐëµ÷ÓÃÁíÍâÒ»¸öSDKÖеÄAPIº¯ÊýCallNextHookExÀ´´«µÝËü£¬ÒÔÖ´Ðй³×ÓÁ´±íËùÖ¸µÄÏÂÒ»¸ö¹³×Ó×ӳ̡£Õâ¸öº¯Êý³É¹¦Ê±·µ»Ø¹³×ÓÁ´ÖÐÏÂÒ»¸ö¹³×Ó¹ý³ÌµÄ·µ»ØÖµ£¬·µ»ØÖµµÄÀàÐÍÒÀÀµÓÚ¹³×ÓµÄÀàÐÍ¡£Õâ¸öº¯ÊýµÄÔÐÍÈçÏ£º LRESULT CallNextHookEx ( HHOOK hhk; int nCode; WPARAM wParam; LPARAM lParam; ); hhkΪµ±Ç°¹³×ӵľä±ú£¬ÓÉSetWindowsHookEx()º¯Êý·µ»Ø¡£ NCodeΪ´«¸ø¹³×Ó¹ý³ÌµÄʼþ´úÂë¡£ wParamºÍlParam ·Ö±ðÊÇ´«¸ø¹³×Ó×ӳ̵ÄwParamÖµ£¬Æä¾ßÌ庬ÒåÓë¹³×ÓÀàÐÍÓйء£ ¹³×Óº¯ÊýÒ²¿ÉÒÔͨ¹ýÖ±½Ó·µ»ØTRUEÀ´¶ªÆú¸ÃÏûÏ¢£¬²¢×èÖ¹¸ÃÏûÏ¢µÄ´«µÝ¡£·ñÔòµÄ»°£¬ÆäËû°²×°Á˹³×ÓµÄÓ¦ÓóÌÐò½«²»»á½ÓÊÕµ½¹³×ÓµÄ֪ͨ¶øÇÒ»¹ÓпÉÄܲúÉú²»ÕýÈ·µÄ½á¹û¡£ ¹³×ÓÔÚʹÓÃÍêÖ®ºóÐèÒªÓÃUnHookWindowsHookEx()Ð¶ÔØ£¬·ñÔò»áÔì³ÉÂé·³¡£Êͷʳ×ӱȽϼòµ¥£¬UnHookWindowsHookEx()Ö»ÓÐÒ»¸ö²ÎÊý¡£º¯ÊýÔÐÍÈçÏ£º UnHookWindowsHookEx ( HHOOK hhk; ); º¯Êý³É¹¦·µ»ØTRUE£¬·ñÔò·µ»ØFALSE¡£ 3¡¢Ò»Ð©ÔËÐлúÖÆ£º ÔÚWin16»·¾³ÖУ¬DLLµÄÈ«¾ÖÊý¾Ý¶Ôÿ¸öÔØÈëËüµÄ½ø³ÌÀ´Ëµ¶¼ÊÇÏàͬµÄ£»¶øÔÚWin32»·¾³ÖУ¬Çé¿öÈ´·¢ÉúÁ˱仯£¬DLLº¯ÊýÖеĴúÂëËù´´½¨µÄÈκζÔÏ󣨰üÀ¨±äÁ¿£©¶¼¹éµ÷ÓÃËüµÄÏ̻߳ò½ø³ÌËùÓС£µ±½ø³ÌÔÚÔØÈëDLLʱ£¬²Ù×÷ϵͳ×Ô¶¯°ÑDLLµØÖ·Ó³Éäµ½¸Ã½ø³ÌµÄ˽Óпռ䣬Ҳ¾ÍÊǽø³ÌµÄÐéÄâµØÖ·¿Õ¼ä£¬¶øÇÒÒ²¸´ÖƸÃDLLµÄÈ«¾ÖÊý¾ÝµÄÒ»·Ý¿½±´µ½¸Ã½ø³Ì¿Õ¼ä¡£Ò²¾ÍÊÇ˵ÿ¸ö½ø³ÌËùÓµÓеÄÏàͬµÄDLLµÄÈ«¾ÖÊý¾Ý£¬ËüÃǵÄÃû³ÆÏàͬ£¬µ«Æäֵȴ²¢²»Ò»¶¨ÊÇÏàͬµÄ£¬¶øÇÒÊÇ»¥²»¸ÉÉæµÄ¡£ Òò´Ë£¬ÔÚWin32»·¾³ÏÂÒªÏëÔÚ¶à¸ö½ø³ÌÖй²ÏíÊý¾Ý£¬¾Í±ØÐë½øÐбØÒªµÄÉèÖá£ÔÚ·ÃÎÊͬһ¸öDllµÄ¸÷½ø³ÌÖ®¼ä¹²Ïí´æ´¢Æ÷ÊÇͨ¹ý´æ´¢Æ÷Ó³ÉäÎļþ¼¼ÊõʵÏֵġ£Ò²¿ÉÒÔ°ÑÕâЩÐèÒª¹²ÏíµÄÊý¾Ý·ÖÀë³öÀ´£¬·ÅÖÃÔÚÒ»¸ö¶ÀÁ¢µÄÊý¾Ý¶ÎÀ²¢°Ñ¸Ã¶ÎµÄÊôÐÔÉèÖÃΪ¹²Ïí¡£±ØÐë¸øÕâЩ±äÁ¿¸³³õÖµ£¬·ñÔò±àÒëÆ÷»á°ÑûÓи³³õʼֵµÄ±äÁ¿·ÅÔÚÒ»¸ö½Ðδ±»³õʼ»¯µÄÊý¾Ý¶ÎÖС£ #pragma data_segÔ¤´¦ÀíÖ¸ÁîÓÃÓÚÉèÖù²ÏíÊý¾Ý¶Î¡£ÀýÈ磺 #pragma data_seg("SharedDataName" ![]() HHOOK hHook=NULL; #pragma data_seg() ÔÚ#pragma data_seg("SharedDataName" ºÍ#pragma data_seg()Ö®¼äµÄËùÓбäÁ¿½«±»·ÃÎʸÃDllµÄËùÓнø³Ì¿´µ½ºÍ¹²Ïí¡£ÔÙ¼ÓÉÏÒ»ÌõÖ¸Áî#pragma comment(linker,"/section:.SharedDataName,rws" ,ÄÇôÕâ¸öÊý¾Ý½ÚÖеÄÊý¾Ý¿ÉÒÔÔÚËùÓÐDLLµÄʵÀýÖ®¼ä¹²Ïí¡£ËùÓжÔÕâЩÊý¾ÝµÄ²Ù×÷¶¼Õë¶Ôͬһ¸öʵÀýµÄ£¬¶ø²»ÊÇÔÚÿ¸ö½ø³ÌµÄµØÖ·¿Õ¼äÖж¼ÓÐÒ»·Ý¡£µ±½ø³ÌÒþʽ»òÏÔʽµ÷ÓÃÒ»¸ö¶¯Ì¬¿âÀïµÄº¯Êýʱ£¬ÏµÍ³¶¼Òª°ÑÕâ¸ö¶¯Ì¬¿âÓ³Éäµ½Õâ¸ö½ø³ÌµÄÐéÄâµØÖ·¿Õ¼äÀï(ÒÔϼò³Æ"µØÖ·¿Õ¼ä" ¡£ÕâʹµÃDLL³ÉΪ½ø³ÌµÄÒ»²¿·Ö£¬ÒÔÕâ¸ö½ø³ÌµÄÉí·ÝÖ´ÐУ¬Ê¹ÓÃÕâ¸ö½ø³ÌµÄ¶ÑÕ»¡£4¡¢ÏµÍ³¹³×ÓÓëÏ̹߳³×Ó£º SetWindowsHookEx()º¯ÊýµÄ×îºóÒ»¸ö²ÎÊý¾ö¶¨Á˴˹³×ÓÊÇϵͳ¹³×Ó»¹ÊÇÏ̹߳³×Ó¡£ Ï̹߳´×ÓÓÃÓÚ¼àÊÓÖ¸¶¨Ï̵߳ÄʼþÏûÏ¢¡£Ï̹߳´×ÓÒ»°ãÔÚµ±Ç°Ï̻߳òÕßµ±Ç°Ïß³ÌÅÉÉúµÄÏß³ÌÄÚ¡£ ϵͳ¹´×Ó¼àÊÓϵͳÖеÄËùÓÐÏ̵߳ÄʼþÏûÏ¢¡£ÒòΪϵͳ¹´×Ó»áÓ°ÏìϵͳÖÐËùÓеÄÓ¦ÓóÌÐò£¬ËùÒÔ¹´×Óº¯Êý±ØÐë·ÅÔÚ¶ÀÁ¢µÄ¶¯Ì¬Á´½Ó¿â(DLL) ÖС£ÏµÍ³×Ô¶¯½«°üº¬"¹³×ӻص÷º¯Êý"µÄDLLÓ³Éäµ½Êܹ³×Óº¯ÊýÓ°ÏìµÄËùÓнø³ÌµÄµØÖ·¿Õ¼äÖУ¬¼´½«Õâ¸öDLL×¢ÈëÁËÄÇЩ½ø³Ì¡£ ¼¸µã˵Ã÷£º £¨1£©Èç¹û¶ÔÓÚͬһʼþ£¨ÈçÊó±êÏûÏ¢£©¼È°²×°ÁËÏ̹߳´×ÓÓÖ°²×°ÁËϵͳ¹´×Ó£¬ÄÇôϵͳ»á×Ô¶¯Ïȵ÷ÓÃÏ̹߳´×Ó£¬È»ºóµ÷ÓÃϵͳ¹´×Ó¡£ £¨2£©¶ÔͬһʼþÏûÏ¢¿É°²×°¶à¸ö¹´×Ó´¦Àí¹ý³Ì£¬ÕâЩ¹´×Ó´¦Àí¹ý³ÌÐγÉÁ˹´×ÓÁ´¡£µ±Ç°¹´×Ó´¦Àí½áÊøºóÓ¦°Ñ¹´×ÓÐÅÏ¢´«µÝ¸øÏÂÒ»¸ö¹´×Óº¯Êý¡£ £¨3£©¹´×ÓÌØ±ðÊÇϵͳ¹´×Ó»áÏûºÄÏûÏ¢´¦Àíʱ¼ä£¬½µµÍϵͳÐÔÄÜ¡£Ö»ÓÐÔÚ±ØÒªµÄʱºò²Å°²×°¹´×Ó£¬ÔÚʹÓÃÍê±ÏºóÒª¼°Ê±Ð¶ÔØ¡£ -------------------------------------------------------------------------------- ¹³×ÓÀàÐÍ Ã¿Ò»ÖÖÀàÐ͵ÄHook¿ÉÒÔʹӦÓóÌÐòÄܹ»¼àÊÓ²»Í¬ÀàÐ͵ÄϵͳÏûÏ¢´¦Àí»úÖÆ¡£ÏÂÃæÃèÊöËùÓпÉÒÔÀûÓõÄHookÀàÐÍ¡£ 1¡¢WH_CALLWNDPROCºÍWH_CALLWNDPROCRET Hooks WH_CALLWNDPROCºÍWH_CALLWNDPROCRET HooksʹÄã¿ÉÒÔ¼àÊÓ·¢Ë͵½´°¿Ú¹ý³ÌµÄÏûÏ¢¡£ÏµÍ³ÔÚÏûÏ¢·¢Ë͵½½ÓÊÕ´°¿Ú¹ý³Ì֮ǰµ÷ÓÃWH_CALLWNDPROC Hook×ӳ̣¬²¢ÇÒÔÚ´°¿Ú¹ý³Ì´¦ÀíÍêÏûÏ¢Ö®ºóµ÷ÓÃWH_CALLWNDPROCRET Hook×ӳ̡£ WH_CALLWNDPROCRET Hook´«µÝÖ¸Õëµ½CWPRETSTRUCT½á¹¹£¬ÔÙ´«µÝµ½Hook×ӳ̡£ CWPRETSTRUCT½á¹¹°üº¬ÁËÀ´×Ô´¦ÀíÏûÏ¢µÄ´°¿Ú¹ý³ÌµÄ·µ»ØÖµ£¬Í¬ÑùÒ²°üÀ¨ÁËÓëÕâ¸öÏûÏ¢¹ØÁªµÄÏûÏ¢²ÎÊý¡£ 2¡¢WH_CBT Hook ÔÚÒÔÏÂʼþ֮ǰ£¬ÏµÍ³¶¼»áµ÷ÓÃWH_CBT Hook×ӳ̣¬ÕâЩʼþ°üÀ¨£º 1. ¼¤»î£¬½¨Á¢£¬Ïú»Ù£¬×îС»¯£¬×î´ó»¯£¬Òƶ¯£¬¸Ä±ä³ß´çµÈ´°¿Úʼþ£» 2. Íê³ÉϵͳָÁ 3. À´×ÔϵͳÏûÏ¢¶ÓÁÐÖеÄÒÆ¶¯Êó±ê£¬¼üÅÌʼþ£» 4. ÉèÖÃÊäÈë½¹µãʼþ£» 5. ͬ²½ÏµÍ³ÏûÏ¢¶ÓÁÐʼþ¡£ Hook×ӳ̵ķµ»ØÖµÈ·¶¨ÏµÍ³ÊÇ·ñÔÊÐí»òÕß·ÀÖ¹ÕâЩ²Ù×÷ÖеÄÒ»¸ö¡£ 3¡¢WH_DEBUG Hook ÔÚϵͳµ÷ÓÃϵͳÖÐÓëÆäËûHook¹ØÁªµÄHook×Ó³Ì֮ǰ£¬ÏµÍ³»áµ÷ÓÃWH_DEBUG Hook×ӳ̡£Äã¿ÉÒÔʹÓÃÕâ¸öHookÀ´¾ö¶¨ÊÇ·ñÔÊÐíϵͳµ÷ÓÃÓëÆäËûHook¹ØÁªµÄHook×ӳ̡£ 4¡¢WH_FOREGROUNDIDLE Hook µ±Ó¦ÓóÌÐòµÄǰ̨Ï̴߳¦ÓÚ¿ÕÏÐ״̬ʱ£¬¿ÉÒÔʹÓÃWH_FOREGROUNDIDLE HookÖ´ÐеÍÓÅÏȼ¶µÄÈÎÎñ¡£µ±Ó¦ÓóÌÐòµÄǰ̨Ï̴߳ó¸ÅÒª±ä³É¿ÕÏÐ״̬ʱ£¬ÏµÍ³¾Í»áµ÷ÓÃWH_FOREGROUNDIDLE Hook×ӳ̡£ 5¡¢WH_GETMESSAGE Hook Ó¦ÓóÌÐòʹÓÃWH_GETMESSAGE HookÀ´¼àÊÓ´ÓGetMessage or PeekMessageº¯Êý·µ»ØµÄÏûÏ¢¡£Äã¿ÉÒÔʹÓÃWH_GETMESSAGE HookÈ¥¼àÊÓÊó±êºÍ¼üÅÌÊäÈ룬ÒÔ¼°ÆäËû·¢Ë͵½ÏûÏ¢¶ÓÁÐÖеÄÏûÏ¢¡£ 6¡¢WH_JOURNALPLAYBACK Hook WH_JOURNALPLAYBACK HookʹӦÓóÌÐò¿ÉÒÔ²åÈëÏûÏ¢µ½ÏµÍ³ÏûÏ¢¶ÓÁС£¿ÉÒÔʹÓÃÕâ¸öHook»Ø·Åͨ¹ýʹÓÃWH_JOURNALRECORD Hook¼Ç¼ÏÂÀ´µÄÁ¬ÐøµÄÊó±êºÍ¼üÅÌʼþ¡£Ö»ÒªWH_JOURNALPLAYBACK HookÒѾ°²×°£¬Õý³£µÄÊó±êºÍ¼üÅÌʼþ¾ÍÊÇÎÞЧµÄ¡£ WH_JOURNALPLAYBACK HookÊÇÈ«¾ÖHook£¬Ëü²»ÄÜÏóÏß³ÌÌØ¶¨HookÒ»ÑùʹÓᣠWH_JOURNALPLAYBACK Hook·µ»Ø³¬Ê±Öµ£¬Õâ¸öÖµ¸æËßϵͳÔÚ´¦ÀíÀ´×ԻطÅHookµ±Ç°ÏûϢ֮ǰÐèÒªµÈ´ý¶à³¤Ê±¼ä£¨ºÁÃ룩¡£Õâ¾ÍʹHook¿ÉÒÔ¿ØÖÆÊµÊ±Ê¼þµÄ»Ø·Å¡£ WH_JOURNALPLAYBACKÊÇsystem-wide local hooks£¬Ëü‚ƒ²»•þ±»×¢Éäµ½ÈκÎÐгÌλַ¿Õég¡£ 7¡¢WH_JOURNALRECORD Hook WH_JOURNALRECORD HookÓÃÀ´¼àÊӺͼǼÊäÈëʼþ¡£µäÐ͵ģ¬¿ÉÒÔʹÓÃÕâ¸öHook¼Ç¼Á¬ÐøµÄÊó±êºÍ¼üÅÌʼþ£¬È»ºóͨ¹ýʹÓÃWH_JOURNALPLAYBACK HookÀ´»Ø·Å¡£ WH_JOURNALRECORD HookÊÇÈ«¾ÖHook£¬Ëü²»ÄÜÏóÏß³ÌÌØ¶¨HookÒ»ÑùʹÓᣠWH_JOURNALRECORDÊÇsystem-wide local hooks£¬Ëü‚ƒ²»•þ±»×¢Éäµ½ÈκÎÐгÌλַ¿Õég¡£ 8¡¢WH_KEYBOARD Hook ÔÚÓ¦ÓóÌÐòÖУ¬WH_KEYBOARD HookÓÃÀ´¼àÊÓWM_KEYDOWN and WM_KEYUPÏûÏ¢£¬ÕâЩÏûϢͨ¹ýGetMessage or PeekMessage function·µ»Ø¡£¿ÉÒÔʹÓÃÕâ¸öHookÀ´¼àÊÓÊäÈëµ½ÏûÏ¢¶ÓÁÐÖеļüÅÌÏûÏ¢¡£ 9¡¢WH_KEYBOARD_LL Hook WH_KEYBOARD_LL Hook¼àÊÓÊäÈëµ½Ïß³ÌÏûÏ¢¶ÓÁÐÖеļüÅÌÏûÏ¢¡£ 10¡¢WH_MOUSE Hook WH_MOUSE Hook¼àÊÓ´ÓGetMessage »òÕß PeekMessage º¯Êý·µ»ØµÄÊó±êÏûÏ¢¡£Ê¹ÓÃÕâ¸öHook¼àÊÓÊäÈëµ½ÏûÏ¢¶ÓÁÐÖеÄÊó±êÏûÏ¢¡£ 11¡¢WH_MOUSE_LL Hook WH_MOUSE_LL Hook¼àÊÓÊäÈëµ½Ïß³ÌÏûÏ¢¶ÓÁÐÖеÄÊó±êÏûÏ¢¡£ 12¡¢WH_MSGFILTER ºÍ WH_SYSMSGFILTER Hooks WH_MSGFILTER ºÍ WH_SYSMSGFILTER HooksʹÎÒÃÇ¿ÉÒÔ¼àÊӲ˵¥£¬¹ö¶¯Ìõ£¬ÏûÏ¢¿ò£¬¶Ô»°¿òÏûÏ¢²¢ÇÒ·¢ÏÖÓû§Ê¹ÓÃALT+TAB or ALT+ESC ×éºÏ¼üÇл»´°¿Ú¡£WH_MSGFILTER HookÖ»ÄܼàÊÓ´«µÝµ½²Ëµ¥£¬¹ö¶¯Ìõ£¬ÏûÏ¢¿òµÄÏûÏ¢£¬ÒÔ¼°´«µÝµ½Í¨¹ý°²×°ÁËHook×ӳ̵ÄÓ¦ÓóÌÐò½¨Á¢µÄ¶Ô»°¿òµÄÏûÏ¢¡£WH_SYSMSGFILTER Hook¼àÊÓËùÓÐÓ¦ÓóÌÐòÏûÏ¢¡£ WH_MSGFILTER ºÍ WH_SYSMSGFILTER HooksʹÎÒÃÇ¿ÉÒÔÔÚģʽѻ·ÆÚ¼ä¹ýÂËÏûÏ¢£¬ÕâµÈ¼ÛÓÚÔÚÖ÷ÏûϢѻ·ÖйýÂËÏûÏ¢¡£ ͨ¹ýµ÷ÓÃCallMsgFilter function¿ÉÒÔÖ±½ÓµÄµ÷ÓÃWH_MSGFILTER Hook¡£Í¨¹ýʹÓÃÕâ¸öº¯Êý£¬Ó¦ÓóÌÐòÄܹ»ÔÚģʽѻ·ÆÚ¼äʹÓÃÏàͬµÄ´úÂëÈ¥¹ýÂËÏûÏ¢£¬ÈçͬÔÚÖ÷ÏûϢѻ·ÀïÒ»Ñù¡£ 13¡¢WH_SHELL Hook Íâ¿ÇÓ¦ÓóÌÐò¿ÉÒÔʹÓÃWH_SHELL HookÈ¥½ÓÊÕÖØÒªµÄ֪ͨ¡£µ±Íâ¿ÇÓ¦ÓóÌÐòÊǼ¤»îµÄ²¢ÇÒµ±¶¥²ã´°¿Ú½¨Á¢»òÕßÏú»Ùʱ£¬ÏµÍ³µ÷ÓÃWH_SHELL Hook×ӳ̡£ WH_SHELL ¹²ÓУµÖÓÇé›r£º 1. Ö»ÒªÓиötop-level¡¢unowned ´°¿Ú±»²úÉú¡¢Æð×÷ÓᢻòÊDZ»´Ý»Ù£» 2. µ±TaskbarÐèÒªÖØ»Ä³¸ö°´Å¥£» 3. µ±ÏµÍ³ÐèÒªÏÔʾ¹ØÓÚTaskbarµÄÒ»¸ö³ÌÐòµÄ×îС»¯ÐÎʽ£» 4. µ±Ä¿Ç°µÄ¼üÅ̲¼¾Ö״̬¸Ä±ä£» 5. µ±Ê¹ÓÃÕß°´Ctrl+EscÈ¥Ö´ÐÐTask Manager£¨»òÏàͬ¼¶±ðµÄ³ÌÐò£©¡£ °´ÕÕ¹ßÀý£¬Íâ¿ÇÓ¦ÓóÌÐò¶¼²»½ÓÊÕWH_SHELLÏûÏ¢¡£ËùÒÔ£¬ÔÚÓ¦ÓóÌÐòÄܹ»½ÓÊÕWH_SHELLÏûϢ֮ǰ£¬Ó¦ÓóÌÐò±ØÐëµ÷ÓÃSystemParametersInfo function×¢²áËü×Ô¼º¡£ |
» ²ÂÄãϲ»¶
¿¼Ñе÷¼Á
ÒѾÓÐ3È˻ظ´
»¯¹¤Ñ§Ë¶294·Ö£¬Çóµ¼Ê¦ÊÕÁô
ÒѾÓÐ25È˻ظ´
327Çóµ÷¼Á
ÒѾÓÐ12È˻ظ´
085600²ÄÁÏÓ뻯¹¤329·ÖÇóµ÷¼Á
ÒѾÓÐ11È˻ظ´
Ò»Ö¾Ô¸»¦9£¬326ÇóÉúÎïѧµ÷¼Á
ÒѾÓÐ8È˻ظ´
ÉúÎïѧ308·ÖÇóµ÷¼Á£¨Ò»Ö¾Ô¸»ª¶«Ê¦´ó£©½ÓÊÜ¿çרҵ
ÒѾÓÐ3È˻ظ´
±¾¿ÆÖ£ÖÝ´óѧ£¬Ò»Ö¾Ô¸»ª¶«Ê¦·¶´óѧ282Çóµ÷¼Á
ÒѾÓÐ33È˻ظ´
291 Çóµ÷¼Á
ÒѾÓÐ31È˻ظ´
0854µ÷¼Á
ÒѾÓÐ13È˻ظ´
¿¼ÑÐÇóµ÷¼Á
ÒѾÓÐ10È˻ظ´















»Ø¸´´ËÂ¥