óÀ½À¸·Î  l  ·Î±×ÀÎ  l  ȸ¿ø°¡ÀÔ  l  ¾ÆÀ̵ð/ºñ¹Ð¹øȣã±â  l  2024.4.27 (Åä)
±Û¾¾Å©±â Å©°Ô  ±Û¾¾Å©±â ÀÛ°Ô  ±â»ç ¸ÞÀÏÀü¼Û  ±â»ç Ãâ·Â  ±â»ç½ºÅ©·¦
 http://www.comtimes.kr/news/109
¹ßÇàÀÏ: 2009/03/01  ÀÌâ±Ù
·¡½ÅÀÌÀÇ ÈÄÅ·À¸·Î ¾Ë¾Æº¸´Â À©µµ¿ì ÇØÅ·ÀÇ ¹ÌÇÐ - 2°­
¼­ºêŬ·¡½Ì(SubClassing)À¸·Î À©µµ¿ì ÇÁ·Î½ÃÀú Ãß¿ùÇϱâ

Áö³­ °­Á¿¡¼­ À©µµ¿ì¿Í ¸Þ½ÃÁö ´ëÇؼ­ À̾߱⸦ ÇÏ¿´½À´Ï´Ù. Å°º¸µå·Î ŸÀÌÇÎÀ» Çϰųª ¸¶¿ì½º·Î Ŭ¸¯À» ÇÏ´Â µîÀÇ ÇàÀ§°¡ ¸Þ½ÃÁö·Î ¹Ù²î¾î À©µµ¿ì ÇÁ·Î½ÃÀú·Î Àü´ÞÀÌ µÈ´Ù°í ÇÏ¿´½À´Ï´Ù. À̹ø °­Á¿¡¼­´Â À©µµ¿ì ¸Þ½ÃÁöÀÇ Á¾ÂøÁ¡ÀÎ À©µµ¿ì ÇÁ·Î½ÃÀú¸¦ ÈÄÅ·ÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ À̾߱⸦ ÇÏ°Ú½À´Ï´Ù. À©µµ¿ì ÇÁ·Î½ÃÀú·Î ¸Þ½ÃÁö¸¦ Àü´ÞÇÏ´Â °ÍÀ» ºØ¾î»§ÀÌ ´Ù À;úÀ» ¶§ ¼Õ´Ô¿¡°Ô Àü´ÞÇÏ´Â °ÍÀ¸·Î ºñÀ¯¸¦ Çß¾ú½À´Ï´Ù. ¸¸¾à¿¡ ¼Õ´ÔÀÌ Àå»ç²ÛÀÌ ³»¹Ì´Â ºØ¾î»§À» ¹Þ±â ¹Ù·Î Á÷Àü¿¡ ºØ¾î»§ ¾È¿¡ µç ´ÜÆÏÀÌ ½È¾î¼­ ´Ù¸¥ ¼Ò½º·Î ¹Ù²Ù¾î ´Þ¶ó°í ÇÑ´Ù¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä? ÀÌ¹Ì Àå»ç²ÛÀº ´Ù ¸¸µç ºØ¾î»§À» ¼Õ´Ô ¾Õ¿¡ ³»¹Ð¾ú´Âµ¥¡¦¡¦. ÀÌ·² ¶§¿¡´Â ±× ºØ¾î»§À» ´Ù½Ã ¾îµð·Ð°¡ °¡Á®°¡¼­ ºØ¾î»§¿¡ µç ´ÜÆÏÀ» ´Ù »©°í, ´Ù¸¥ ¼Ò½º·Î ³Ö¾î¼­ ´Ù½Ã ¼Õ´Ô¿¡°Ô °¡Á®´Ù ÁÖ¾î¾ß ÇÕ´Ï´Ù(¼Õ´ÔÀÌ ¿ÕÀ̶ó°í »ý°¢ÇսôÙ. ¡°¼Õ´Ô ¸ÂÀ»·¡¿ä?¡±¶ó°í ÇÏÁö ¸¶½Ã°í^^). ¸Þ½ÃÁö(ºØ¾î»§)°¡ À©µµ¿ì ÇÁ·Î½ÃÀú(¼Õ´Ô)·Î Àü´ÞµÇ±â Àü¿¡ ´Ù¸¥ ÀÏ(ºØ¾î»§ ¼Ò½º¸¦ ¹Ù²Ù´Â ÀÏ)À» ó¸®ÇÏ°í ½Í´Ù¸é ±× Àü¿¡ ¸Þ½ÃÁö¸¦ °¡·Îä¼­ ÀÏÀ» ¼öÇàÇÏ°í, ´Ù½Ã À©µµ¿ì ÇÁ·Î½ÃÀú·Î Àü´ÞÇØ ÁÖ¸é µÇ°ÚÁÒ. ÀÌ·± ¹æ¹ýÀ¸·Î ¸Þ½ÃÁö°¡ À©µµ¿ì ÇÁ·Î½ÃÀú·Î Àü´ÞµÇ±â Àü¿¡ ¸Þ½ÃÁö¸¦ °¡·Îä¼­ ÀÚ½ÅÀÌ ¿øÇÏ´Â ÀÏÀ» ÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ±â¹ýÀ» ¼­ºêŬ·¡½Ì(SubClassing)À̶ó°í ÇÕ´Ï´Ù. À§¿¡¼­ ¼³¸íÇÑ ³»¿ëÀ» ¿ä¾àÇÏ¸é ¾Æ·¡ ±×¸²°ú °°½À´Ï´Ù.


±×¸² 1. ¼­ºêŬ·¡½Ì(SubClassing)

 

 ¼­ºêŬ·¡½ÌÀÇ ¿ëµµ´Â ¹«±Ã¹«ÁøÇÕ´Ï´Ù. À©µµ¿ì ÇÁ·Î½ÃÀú·Î °¡´Â ¸Þ½ÃÁö¸¦ Á¦¾îÇÒ ¼ö Àֱ⠶§¹®¿¡ ¼­ºêŬ·¡½ÌÇÑ À©µµ¿ì¸¦ Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¶À½¸¸ ¸ÔÀ¸¸é À©µµ¿ì ÇÁ·Î½ÃÀú·Î ¸Þ½ÃÁö¸¦ º¸³»Áö ¾Ê¾Æ À©µµ¿ì °íÀ¯ÀÇ ±â´ÉÀ» ¼öÇàÇÏÁö ¸øÇÏ°Ôµµ ÇÒ ¼ö ÀÖ°í, À©µµ¿ì ÇÁ·Î½ÃÀú¿¡¼­ Áö¿øÇÏ´Â ±â´É ¿Ü¿¡ ´Ù¸¥ ±â´ÉÀ» Ãß°¡ÇÏ¿© À©µµ¿ìÀÇ ±â´ÉÀ» È®Àå ½Ãų ¼öµµ ÀÖ½À´Ï´Ù. ¸Þ½ÃÁö¸¦ ¹Ì¸® ¹Þ±â ¶§¹®¿¡ ¸Þ½ÃÁöÀÇ È帧À» ¾Ë ¼ö À־ µð¹ö±ë¿ëÀ¸·Îµµ »ç¿ëÇÒ ¼ö ÀÖ°í, ¸Þ½ÃÁö¸¦ ¾û¶×ÇÏ°Ô Ã³¸®ÇÏ¿© »ç¿ëÀÚ¸¦ È¥¶õ¿¡ ºü¶ß¸®°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¼­ºêŬ·¡½ÌÀº ¾ç³¯ÀÇ °Ëó·³ »ç¿ëÇϱ⿡ µû¶ó¼­ ÇÁ·Î±×·¥À» Çâ»ó½ÃÅ°°Å³ª »ç¿ëÀÚ¸¦ ¸ø»ì°Ô ±¸´Â ¾Ç¼º ÇÁ·Î±×·¥À¸·Î ¸¸µé ¼öµµ ÀÖ½À´Ï´Ù.

 

 ¾ç³¯ÀÇ °Ë °°Àº ¼­ºêŬ·¡½ÌÀ» ¾î¶»°Ô Àû¿ëÇÏ´ÂÁö, ÄÚµå·Î »ìÆ캸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ¾Æ·¡´Â edit À©µµ¿ì¸¦ ¼­ºêŬ·¡½ÌÇÑ ¸ð½À´Ï´Ù.


±×¸² 2. edit À©µµ¿ì ¼­ºêŬ·¡½Ì(±×¸²À» ´Ù¸¥À̸§À¸·Î ÀúÀåÇؼ­ º¸½Ã¸é ±×¸²ÀÌ Å©°Ô º¸ÀÔ´Ï´Ù.)

 

 À§ ¼Ò½º¸¦ °£´ÜÇÏ°Ô ¼³¸íÇÏÀÚ¸é,

191ÁÙ : ¼­ºêŬ·¡½Ì ±â¹ýÀ» Àû¿ëÇϱâ À§ÇØ SetWindowLongPtr() ÇÔ¼ö¸¦ È£ÃâÇÏ¿´½À´Ï´Ù.

197ÁÙ : ¹®ÀÚ¿­À» Ãâ·ÂÇÕ´Ï´Ù. (Áß¿äÇÏÁö´Â ¾Ê½À´Ï´Ù.)

202ÁÙ : Á¾·áÇϱâ Àü¿¡ ¼­ºêŬ·¡½ÌÇÑ °ÍÀ» µ¹·Á³õÀ¸·Á°í SetWindowLongPtr() ÇÔ¼ö¸¦ È£ÃâÇÏ¿´½À´Ï´Ù. µ¹·Á³õÁö ¾ÊÀ¸¸é ÇÁ·Î±×·¥ÀÌ Á¤»ó Á¾·á°¡ ¾È µÇ´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

 Win32 API Áß¿¡ GetWindowLong(), SetWindowLong() ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ µÎ ÇÔ¼ö´Â À©µµ¿ì Ŭ·¡½º Á¤º¸¸¦ °¡Á®¿À°í, ¼³Á¤ÇÏ´Â ±â´ÉÀ» ÇÕ´Ï´Ù. ¼­ºêŬ·¡½ÌÀº ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇؼ­ À©µµ¿ì Ŭ·¡½º¿¡¼­ À©µµ¿ì ÇÁ·Î½ÃÀú¸¦ ÀúÀåÇÏ´Â º¯¼öÀÇ °ªÀ» ¹Ù²ß´Ï´Ù. GetWindowLong() ÇÔ¼öÀÇ ¿øÇüÀº ´ÙÀ½°ú °°½À´Ï´Ù.

 LONG GetWindowLong(     
    HWND hWnd,
    int nIndex
);
 Ã¹ ¹ø° ÀÎÀÚ´Â Á¤º¸¸¦ °¡Á®¿Ã À©µµ¿ì ÇÚµéÀÔ´Ï´Ù. µÎ ¹ø° ÀÎÀÚ´Â À©µµ¿ì Ŭ·¡½º¿¡¼­ °¡Á®¿Ã º¯¼öÀÇ ¿ÀÇÁ¼ÂÀÔ´Ï´Ù. ÀÌ °ªÀº MSDNÀ» Âü°íÇÏ¸é µË´Ï´Ù. ¸®ÅÏ °ªÀº ÇØ´ç À©µµ¿ì Ŭ·¡½º º¯¼ö °ªÀÔ´Ï´Ù. ´ÙÀ½À¸·Î SetWindowLong() ÇÔ¼öÀÇ ¿øÇüÀº ´ÙÀ½°ú °°½À´Ï´Ù.

DWORD SetClassLong(     
    HWND hWnd,
    int nIndex,
    LONG dwNewLong
);
 Ã¹ ¹ø° ÀÎÀÚ´Â Á¤º¸¸¦ °¡Á®¿Ã À©µµ¿ì ÇÚµéÀÔ´Ï´Ù. µÎ ¹ø° ÀÎÀÚ´Â À©µµ¿ì Ŭ·¡½º¿¡¼­ °¡Á®¿Ã º¯¼öÀÇ ¿ÀÇÁ¼ÂÀÔ´Ï´Ù. ÀÌ °ªÀº MSDNÀ» Âü°íÇÏ¸é µË´Ï´Ù. ¼¼ ¹ø° º¯¼ö¿¡ µ¤¾î¾º¿ï °ªÀÔ´Ï´Ù. ¸®ÅÏ ±âÁ¸¿¡ ÀÖ´ø °ªÀÔ´Ï´Ù.

 

¡Ø À§¿¡¼­ »ç¿ëÇÑ SetWindowLongPtr() ÇÔ¼ö´Â 64bit¿Í ȣȯÀ» À§ÇÑ °ÍÀÌ°í ±â´É°ú ÇÔ¼ö »ç¿ë¹ýÀº SetWindowLong() ÇÔ¼ö¿Í °°½À´Ï´Ù. GetWindowLong() ÇÔ¼öµµ ¸¶Âù°¡Áö·Î GetWindowLongPtr() ÇÔ¼ö°¡ ÀÖ°í ±â´É°ú ÇÔ¼ö »ç¿ë¹ýÀÌ °°½À´Ï´Ù.

 

 À§ ¼Ò½º¿¡¼­ ¼­ºêŬ·¡½ÌÀ» Àû¿ëÇÑ ÄÚµå 191¹ø° ÁÙÀº ´ÙÀ½°ú °°½À´Ï´Ù.

OldEditProc = (WNDPROC)SetWindowLongPtr(hEdit1, GWL_WNDPROC, (LRESULT) EditSubClassingProc);

 

 hEdit1Àº edit À©µµ¿ì ÇÚµéÀÌ°í, GWL_WNDPROC´Â À©µµ¿ì ÇÁ·Î½ÃÀúÀÇ °ªÀ» ¹Ù²Ù°Ú´Ù´Â °ÍÀÔ´Ï´Ù. ¼¼ ¹ø°´Â À©µµ¿ì ÇÁ·Î½ÃÀú ´ë½Å µé¾î°¥ °ªÀÔ´Ï´Ù. ¼¼ ¹ø° ÀÎÀÚ·Î ³ÖÀº ÇÔ¼ö°¡ ³ªÁß¿¡ À©µµ¿ì ÇÁ·Î½ÃÀú º¸´Ù ¸ÕÀú È£ÃâµÇ´Â ÇÔ¼ö°¡ µÇ´Â °ÍÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á edit À©µµ¿ìÀÇ À©µµ¿ì ÇÁ·Î½ÃÀú°¡ ¸Þ½ÃÁö¸¦ ¹Þ±â Àü¿¡ EditSubClassingProc() ÇÔ¼ö°¡ ¸ÕÀú ¸Þ½ÃÁö¸¦ ¹Þ½À´Ï´Ù. ºê·¹ÀÌÅ© Æ÷ÀÎÆ®¸¦ °É°í À©µµ¿ì Ŭ·¡½ºÀÇ °ªÀÌ ¹Ù²î´ÂÁö È®ÀÎÀ» ÇØ º¸°Ú½À´Ï´Ù.


±×¸² 3. ¼­ºêŬ·¡½Ì Àû¿ë È®ÀÎ

 

 176¹ø° ÁÙ¿¡¼­ F10À» ÇÑ ¹ø ´©¸¥ °ÍÀÔ´Ï´Ù. OldEditProc ¿¡ edit À©µµ¿ìÀÇ lpfnWndProc º¯¼ö¿¡ ±âÁ¸ °ªÀÌ µé¾î°¡°í, edit À©µµ¿ì¿¡ lpfnWndProc¿¡´Â EditSubClassingProc() ÇÔ¼öÀÇ ÁÖ¼Ò °ªÀÌ µé¾î°¬½À´Ï´Ù. ±×·¸´Ù¸é 0x77d1b3d4 °¡ Á¤¸» edit À©µµ¿ìÀÇ À©µµ¿ì ÇÁ·Î½ÃÀúÀϱî¿ä? È®ÀÎÀ» Çϱâ À§Çؼ­ WinDbg·Î Á÷Á¢ º¸°Ú½À´Ï´Ù. WinDbg´Â À©µµ¿ì Ä¿³Î µð¹ö°ÅÀε¥ À©µµ¿ì¸¦ °øºÎÇÒ ¶§µµ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Debugging Tools for WindowsÀ» ¼³Ä¡Çϸé WinDbg°¡ µé¾î ÀÖ½À´Ï´Ù. WinDbg¿¡ ´ëÇÑ ¼³¸íÀº ³ªÁß¿¡ ±âȸ°¡ µÇ¸é Çϱâ·Î ÇÏ°Ú½À´Ï´Ù. À̹ø¿¡´Â °£´ÜÇÏ°Ô °ª¸¸ È®ÀÎÇÏ°í ³Ñ¾î°¡°Ú½À´Ï´Ù. ¾Æ·¡ ĸÃÄ È­¸éÀ» º¸¸é 0x77d1b3d4 ÇÔ¼ö´Â EditWndProcA() ÇÔ¼öÀÇ ÁÖ¼Ò °ªÀÎ °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.


±×¸² 4. 0x77d1b3d4 ÁÖ¼Ò °ª È®ÀÎ

 

´ÙÀ½À¸·Î ¼­ºêŬ·¡½ÌÀÌ Àß µÇ¾ú´ÂÁö, EditSubClassingProc() ÇÔ¼ö¿¡¼­ edit À©µµ¿ì·Î µé¾î¿À´Â ¸Þ½ÃÁö¿Í WPARAM, LPARAM °ªÀ» È®ÀÎÇØ º¸°Ú½À´Ï´Ù. °ªÀ» È®ÀÎÇϱâ À§Çؼ­ µð¹ö±×ºä(DebugView)¸¦ »ç¿ëÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù. Äֿܼ¡¼­ °ªÀ» È®ÀÎÇÒ ¶§ printf ·Î °ªÀ» Ãâ·ÂÇÏ¿© È®ÀÎÇϵíÀÌ À©µµ¿ì¿¡¼­ OutputDebugString() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© °ªÀ» Ãâ·ÂÇÏ¸é µð¹ö±×ºä ÅøÀ» ÀÌ¿ëÇÏ¿© °ªÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÏÀÏÀÌ ¸Þ½ÃÁö ¹Ú½º¸¦ ¶ç¿ï ¼ö°í¸¦ ´ú ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ Äڵ带 º¸°Ú½À´Ï´Ù.

 

±×¸² 5. EditSubClassingProc

 

 28¹ø° ÁÙ¿¡ CallWindowProc() ÇÔ¼ö°¡ Àִµ¥, ¼­ºêŬ·¡½Ì ÇÔ¼ö¿¡¼­ 󸮰¡ ³¡³­ µÚ À©µµ¿ì ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÏ´Â ºÎºÐÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¸¶Áö¸·¿¡ ²À È£ÃâÇØ¾ß ÇÕ´Ï´Ù. ±âº»ÀûÀÎ °ÍÀ» À©µµ¿ì ÇÁ·Î½ÃÀú¿¡¼­ ó¸®Çϵµ·Ï ÇØÁà¾ß Çϴµ¥, ±×·¸Áö ¾ÊÀ» °æ¿ì ÇÁ·Î±×·¥ÀÌ Á¦¸Ú´ë·Î µ¿ÀÛÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °Ì´Ï´Ù. ¿øÇüÀº À©µµ¿ì ÇÁ·Î½ÃÀú¿Í °°°í ¸Ç ù ¹ø° ÀÎÀÚ¿¡ SetWindowLong() ÇÔ¼öÀÇ °á°ú°ªÀ» ³Ö¾î ÁÖ¸é µË´Ï´Ù. ÀÌÁ¦ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ°í ½ÇÇàÀ» ÇÕ´Ï´Ù. ±×¸®°í µð¹ö±×ºä¸¦ ½ÇÇàÇÕ´Ï´Ù. ÀÌÁ¦ edit À©µµ¿ì¿¡ °ªÀ» ÀÔ·ÂÇÏ¸é µð¹ö±×ºä¿¡ °ªÀÌ ÂïÈ÷´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.


±×¸² 6. DebugView·Î °ª È®ÀÎ

 

 µð¹ö±×ºä¸¦ ÅëÇؼ­ ¾öû³ª°Ô ¸¹Àº ¸Þ½ÃÁö°¡ edit À©µµ¿ì·Î Àü´ÞµÇ´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. edit À§·Î ¸¶¿ì½º¸¦ ¿òÁ÷À̱⸸ ÇÏ¸é ¸¶¿ì½º ¿À¹ö ¸Þ½ÃÁö°¡ °è¼Ó ³¯¶ó¿É´Ï´Ù. °ªÀ» ÀÔ·ÂÇصµ ¸Þ½ÃÁö°¡ Àü´ÞµË´Ï´Ù. ¸¸¾à¿¡ ¼­ºêŬ·¡½Ì ÇÔ¼ö¿¡¼­ Àü´Þ ¹ÞÀº ¸Þ½ÃÁö°¡ ¾î¶² ¸Þ½ÃÁöÀÎÁö Ãâ·ÂÀ» ÇÑ´Ù¸é µð¹ö±ëÇÒ ¶§ ¿ä±äÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ°ÚÁÒ? ½ÇÁ¦·Î ÀÌ¿Í ºñ½ÁÇÑ ±â´ÉÀ» ÇÏ´Â µð¹ö±ë¿ë ÅøÀÌ Á¸ÀçÇÕ´Ï´Ù. Áö³­ °­Á¿¡¼­ »ç¿ëÇß´ø Spy++ µµ (¼­ºêŬ·¡½ÌÀ» ÀÌ¿ëÇÑ °Ç ¾Æ´ÏÁö¸¸) ¾î¶² ¸Þ½ÃÁö°¡ Àü´ÞµÇ¾ú´ÂÁö ¾Ë·ÁÁÖ´Â ±â´ÉÀÌ ÀÖ½À´Ï´Ù.

 

¼­ºêŬ·¡½ÌÀº ÇÑ À©µµ¿ì¿¡ ¿©·¯ ¹ø Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. SetWindowLong() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© À©µµ¿ì Ŭ·¡½º º¯¼ö¿¡ °ªÀ» µ¤¾î ¾²´õ¶óµµ OS¿¡¼­ ±âÁ¸ °ªµéÀ» °ü¸®Çϱ⿡ °¡´ÉÇÕ´Ï´Ù. ±×·¸´Ù¸é ¸Þ½ÃÁö¸¦ ¾î´À ¼­ºêŬ·¡½Ì ÇÔ¼ö¿¡¼­ ¸ÕÀú °¡Á®°¥±î¿ä? ¸Ç ³ªÁß¿¡ ¼­ºêŬ·¡½ÌÀ» Àû¿ëÇÑ ÇÔ¼ö°¡ ¸ÕÀú ¸Þ½ÃÁö¸¦ °¡Á®°©´Ï´Ù. ±× ´ÙÀ½ ¼­ºêŬ·¡½Ì ÇÔ¼ö·Î ¸Þ½ÃÁö¸¦ ³Ñ±â´Â 겂Àº CallWindowProc() ÇÔ¼ö°¡ ´ã´çÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾ÊÀ¸¸é ´ÙÀ½ ¼­ºêŬ·¡½Ì ÇÔ¼ö·Î ¸Þ½ÃÁö°¡ Àü´ÞµÇÁö ¾ÊÁÒ. °©ÀÚ±â Àå³­À» Ä¡°í ½ÍÀº »ý°¢ÀÌ µå³ª¿ä? È¥ÀÚ Å×½ºÆ®¸¦ ÇÏ´Â °ÍÀº ÁÁÁö¸¸ ³²µéÀÌ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥¿¡´Â ¾È ÇÏ´Â °ÍÀÌ ÁÁ°ÚÁÒ~^^

 

 ¼­ºêŬ·¡½ÌÀ» ÀÌ¿ëÇؼ­ edit À©µµ¿ì¿¡ ¿å ¹æÁö ±â´ÉÀ» ³Ö´Â ¿¹Á¦·Î ÀÌ °­Á¸¦ ¸¶¹«¸® Çϵµ·Ï ÇÏ°Ú½À´Ï´Ù. ¡°¤µ¤²¡±¸¦ ÀÔ·ÂÇÑ °æ¿ì edit À©µµ¿ì¿¡¼­ ¡°¤µ¤²¡±À» Áö¿ìµµ·Ï ¿¹Á¦¸¦ ÁغñÇÏ¿´½À´Ï´Ù. ¡°¤µ¡±°ú ¡°¤²¡±ÀÌ ¾î¶² Çü½ÄÀ¸·Î edit À©µµ¿ì¿¡ Àü´ÞÀÌ µÇ´ÂÁö ¾Ë¾Æ³»·Á°í edit À©µµ¿ì¸¦ ¼­ºêŬ·¡½ÌÇÏ¿© KEYDOWN ¸Þ½ÃÁö°¡ ¹ß»ýÇÏ¿´À» ¶§ WPARAM°ú LPARAM °ªÀ» ºÐ¼®ÇÏ¿´½À´Ï´Ù.


±×¸² 7. ¿å(¤µ¤²) ¹æÁö ÄÚµå

 

 ¡°¤µ¡± ´ÙÀ½¿¡ ¡°¤²¡±ÀÌ ÀÔ·ÂµÇ¸é ¹é½ºÆäÀ̽º¸¦ 2¹ø ÀÔ·ÂÇϵµ·Ï ÇÏ¿´½À´Ï´Ù. ¹é½ºÆäÀ̸¦ ÀÔ·ÂÇÏ´Â È¿°ú¸¦ ³»±â À§Çؼ­ keybd_event() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù.

 

 À§¿¡¼­ »ç¿ëÇÑ ±â¹ýÀº À©µµ¿ì¸¦ ´ë»óÀ¸·Î ¼­ºêŬ·¡½ÌÀ» ÇÏ¿´½À´Ï´Ù. À©µµ¿ì Ŭ·¡½º¸¦ ´ë»óÀ¸·Î ¼­ºêŬ·¡½ÌÀ» ÇÒ °æ¿ì ÇØ´ç À©µµ¿ì Ŭ·¡½º·Î ¸¸µç ¸ðµç À©µµ¿ì¸¦ ¼­ºêŬ·¡½ÌÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ±âÁ¸ À©µµ¿ì Ŭ·¡½º¸¦ ±×´ë·Î °¡Á®¿Í¼­ ¼öÁ¤À» °¡ÇÏ¿© »õ·Î¿î À̸§¿¡ À©µµ¿ì Ŭ·¡½º·Î ¸¸µé ¼öµµ ÀÖ½À´Ï´Ù. °ü½ÉÀÌ ÀÖ´Ù¸é SetClassLong() ¿Í GetClassInfo() ÇÔ¼ö¸¦ °øºÎÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.

 

 

 @ Âü°íÀÚ·á

l       À©µµ¿ì Ŭ·¡½º °ü·Ã ÇÔ¼ö

 GetWindowLong() : À©µµ¿ì Ŭ·¡½º Á¤º¸¸¦ °¡Á®¿É´Ï´Ù.

 http://msdn.microsoft.com/en-us/library/ms633584(VS.85).aspx

 

GetWindowLongPtr() : GetWindowLong() ÇÔ¼öÀÇ 64bit ȣȯ¿ë ÇÔ¼öÀÔ´Ï´Ù.

 http://msdn.microsoft.com/en-us/library/ms633585(VS.85).aspx

 

SetWindowLong() : À©µµ¿ì Ŭ·¡½º Á¤º¸¸¦ ¼³Á¤ÇÕ´Ï´Ù.

 http://msdn.microsoft.com/en-us/library/ms633591(VS.85).aspx

 

SetWindowLongPtr() : SetWindowLong() ÇÔ¼öÀÇ 64bit ȣȯ¿ë ÇÔ¼öÀÔ´Ï´Ù.

 http://msdn.microsoft.com/en-us/library/ms644898(VS.85).aspx

 

 

l       CallWindowProc() : ´ÙÀ½ À©µµ¿ì·Î ¸Þ½ÃÁö¿Í WPARAM, LPARAM À» Àü´ÞÇÕ´Ï´Ù.

http://msdn.microsoft.com/en-us/library/ms633571(VS.85).aspx

 

l       keybd_event() : Å° À̺¥Æ®¸¦ ¹ß»ý½Ãŵ´Ï´Ù. ½ÇÁ¦ Å°¸¦ ´©¸¥ °Í°ú ºñ½ÁÇÑ È¿°ú¸¦ ³À´Ï´Ù.

 http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx

 

 

l       À¯¿ëÇÑ Åø

WinDbg: Ä¿³ÎÀ» µð¹ö±ëÇÒ ¶§ »ç¿ëÇÏ´Â ÅøÀÔ´Ï´Ù.

http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

 

 

±â»ç : ¹Ú·¡½Å(ÄÄÇ»ÅÍÇкΠ04Çйø)

ÆíÁý : ÀÌâ±Ù(lck85@nate.com)

    ¹Ú·¡½ÅÇлý °æ·Â»çÇ×

2005. 02 ~ 2005. 03 : Log ºÐ¼®±â °³¹ß
2006. 12 ~ 2007. 03 : ÀÓº£µðµå Àåºñ(DVR) °³¹ß (ȸ»ç : ¼ºÁø¾¾¾Ø¾¾)
2006. 01 ~ 2006. 03 : InfoMicro(Çϵå¿þ¾î ¹× »ç¿ëÀÚ°¡ ÇÊ¿äÇÑ Á¤º¸¸¦ ¸ð´ÏÅÍ ¹Û¿¡¼­ º¼ ¼ö ÀÖµµ·Ï ÇÔ) °³¹ß
2006. 03 : IT-Festival¿¡ InfoMicro Àü½Ã(»ï¼º SDS ÁÖ°ü)
2006. 05 : ±³³» °ø°³ º¸¾È ¼¼¹Ì³ª ¹ßÇ¥ (ÁÖÁ¦: "À¥ ÇØÅ·ÀÇ ±âÃÊ")
2006. 10 : Àü±¹´ëÇÐCERT¿¬ÇÕ(U.U.U) Á¦ 3ȸ Á¤±â ¿öÅ©¼¥ ¹ßÇ¥(ÁÖÁ¦: "Ajax º¸¾È")
2006. 12 : ´ëÇÐÁ¤º¸º¸È£¿¬ÇÕȸ(KUCIS)¿¡¼­ ȨÆäÀÌÁö Ãë¾àÁ¡ ¿ì¼ö º¸°í¼­ ¼ö»ó
2007. 03 : À¥ ¾îÇø®ÄÉÀÌ¼Ç °³¹ß º¸¾È ±³À° ¼ö·á (KISA ÁÖÃÖ)
2008. 08 : KISA, Ãë¾àÁ¡ ã±â ´ëȸ Àå·Á»ó
http://www.etnews.co.kr/news/detail.html?id=200808070083
2008. 08 : ¼¼°èÇØÅ·´ëȸ Defcon CTF 4À§(ÆÀ Taekwon-V)
http://www.boannews.com/media/view.asp?idx=10935&kind=4
2008. 09 : »ï¼º SDS ÇØÅ·/º¸¾È °­ÀÇ (ÁÖÁ¦: Reversing with ida)
2008. 12 : ¼þ½Ç´ë COMTIMES ±â°í( ÁÖÁ¦: Àü ¼¼°è ÇØÄ¿µéÀÇ ÀüÀå~! Defcon CTF Âü°¡±â)
http://www.comtimes.kr/news/69
2007. 06 ~ ÇöÀç(2009. 02) : Å°º¸µå º¸¾È ÇÁ·Î±×·¥(nProtect KeyCrypt) °³¹ß (ȸ»ç : À×Ä«ÀÎÅͳÝ)