±â¼ú ÀÚ·á: 600739 - ¸¶Áö¸· °ËÅä: 2005³â 7¿ù 11ÀÏ ¿ù¿äÀÏ - ¼öÁ¤: 1.1

À©µµ¿ì 95¿¡¼­ ½Ã½ºÅÛ-Àü¹Ý ÈÅÀ» ¸¸µé°í ¼³Ä¡ÇÏ´Â ¹æ¹ý

ÀÌ ¹®¼­´Â ÀÌÀü¿¡ ´ÙÀ½ ID·Î ÃâÆÇµÇ¾úÀ½: KR600739
¸ðµÎ È®´ë | ¸ðµÎ Ãà¼Ò

¿ä¾à

À©µµ¿ì95´Â AppInit_DLLs¶ó´Â ·¹Áö½ºÆ®¸® °ªÀ» ÀÌ¿ëÇÏ¿© ÇÁ·Î¼¼½ºÀÇ ¾îµå·¹½º °ø°£¿¡ DLLÀÌ ·ÎµåµÇ°Ô ÇÏ´Â ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù. À©µµ¿ì NT¿¡¼­´Â ¸ðµç ÇÁ·Î¼¼½º°¡ ½ÇÇàµÉ ¶§ AppInit_DLLs ·¹Áö½ºÆ®¸® °ª¿¡ ¸®½ºÆ®µÈ DLLµéÀ» ½ÇÇàµÇ´Â ÇÁ·Î¼¼½º ¾îµå·¹½º °ø°£¿¡ ·ÎµåÇÑ´Ù. À©µµ¿ì 95¿¡¼­´Â ÀÌ¿Í À¯»çÇÑ ±â´ÉÀ» ½Ã½ºÅÛ-Àü¹Ý ÈÅ(hook)À» ÀÌ¿ëÇÏ¿© ±¸Çö °¡´ÉÇÏ´Ù. ¿©±â¿¡¼­´Â ½Ã½ºÅÛ-Àü¹Ý ÈÅ(hook)À» ÀÌ¿ëÇÏ¿© ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.

Ãß°¡ Á¤º¸

½Ã½ºÅÛ-Àü¹Ý ÈÅ(hook)À» ÀÌ¿ëÇÏ·Á¸é ¹Ýµå½Ã DLL³»¿¡ ÈÅÅ·µÉ ÇÔ¼ö(Äݹé ÇÔ¼ö)°¡ ÀÖ¾î¾ß ÇÑ´Ù. ±× ´ÙÀ½, ÀÌ ÇÔ¼ö°¡ ÄÝ µÉ ¶§, À©µµ¿ì95´Â Ÿ°Ù ¾îÇø®ÄÉÀ̼ǿ¡·Î ÈÅ DLLÀ» ¸ÊÇÎÇØ¾ß ÇÑ´Ù. ±×·¯¸é ½ÇÁ¦ ÈÅÅ·µÈ ÇÔ¼ö°¡ Ÿ°Ù ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÏºÎ·Î½á ½ÇÇàµÈ´Ù.

½Ã½ºÅÛ-Àü¹Ý ÈÅ(hook)À» »ý¼ºÇÏ·Á¸é ´ÙÀ½ÀÇ 2´Ü°èÀÇ ÄÚµùÀÌ ÇÊ¿äÇÏ´Ù.
  1. ÈÅÅ· ÇÔ¼ö·Î »ç¿ëµÉ ÀͽºÆ÷Æ® ÇÔ¼ö°¡ Æ÷ÇÔµÈ DLLÀ» ¸¸µç´Ù. ¿©±â¿¡¼­´Â WH_KEYBOARD ½Ã½ºÅÛ-Àü¹Ý ÈÅ(hook)À» ±¸ÇöÇÏ´Â ÇÔ¼öÀÇ À̸§Àº HookFunctionÀÎ Äݹé ÇÔ¼ö·Î ¼±¾ðÇÑ´Ù:
          // Űº¸µå ¸Þ½ÃÁö¸¦ °¡·Îæ´Ù.
          __declspec(dllexport) LRESULT CALLBACK HookFunction(
                           int code,
                           WPARAM wParam,
                           LPARAM lParam)
          {
             char szVCode[50];
    
             // °¡·ÎäÁø °¡»ó Ű Äڵ带 ¸Þ½ÃÁö¹Ú½º¿¡¼­ º¸¿© ÁØ´Ù.
             sprintf(szVCode, "°¡»ó Ű ÄÚµå: %lx", wParam);
             MessageBox(NULL, szVCode,"۰¡ ´­·ÁÁü ", MB_OK);
                    :
    }
    					
    ÀÌ DLLÀÇ ¸ðµâ Á¤ÀÇ ÆÄÀÏ¿¡´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î¾ß ÇÑ´Ù:
          LIBRARY      HOOK
    
          EXPORTS
             HookFunction
    					
  2. ½Ã½ºÅÛ-Àü¹Ý ÈÅÀ» ¼³Ä¡ÇÑ´Ù. ÈÅÀ» ¼³Ä¡ÇÏ·Á¸é, DLLÀÌ ·ÎµåµÇ¾î¾ß Çϰí, ÈÅ ÇÔ¼öÀÇ ¾îµå·¹½º¸¦ GetProcAddress¸¦ ÀÌ¿ëÇÏ¿© ¾Ë¾Æ³½ÈÄ, SetWindowsHookEx¸¦ ÄÝÇÑ´Ù. ´ÙÀ½Àº ¿¹ÀÌ´Ù:
          // ½Ã½ºÅÛ-Àü¹Ý ÈÅÀ» Ãß°¡ÇÑ´Ù.
          hHookDll = LoadLibrary("hook");
          hHookProc = (HOOKPROC) GetProcAddress(hHookDll, "HookFunction");
    
          // ¸ðµç Űº¸µå ¸Þ½ÃÁö¸¦ °¡·Îä´Â Űº¸µå ÈÅÀ» ¼³Ä¡ÇÑ´Ù. 
          hSystemHook =  SetWindowsHookEx(WH_KEYBOARD,hHookProc,hHookDll,0);
    					
    ½Ã½ºÅÛ-Àü¹Ý ÈÅÀ» ÀÌ¿ëÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀ» Á¾·áÇÑ µÚ ½Ã½ºÅÛ-Àü¹Ý ÈÅÀ» ¾ðÈÅ(unhook)ÇÏ´Â ÀÛ¾÷À» ´ÙÀ½°ú °°ÀÌ ÇØ¾ß ÇÑ´Ù:
          // ÈÅÀ» Á¦°ÅÇϰí ÈÅ¿¡ »ç¿ëµÇ¾ú´ø DLLÀ» ÇØÁ¦ÇÑ´Ù
          UnhookWindowsHookEx(hSystemHook);
          FreeLibrary(hHookDll);
    					

ÂüÁ¶

Win32 SDK Reference

º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
  • Microsoft Platform Software Development Kit-January 2000 Edition
Ű¿öµå:?
KB600739