[Áöµð³ÝÄÚ¸®¾Æ]88³âÀº ÇÊÀÚ°¡ ÇÑâ 8ºñÆ® ÄÄÇ»ÅÍ¿´´ø MSX2¿¡ ºüÁ®ÀÖ´ø ½Ã±â¿´´Ù. ±× ´ç½Ã ±³À°¿ë ÄÄÇ»ÅÍ·Î 16ºñÆ® ÄÄÇ»ÅͰ¡ äÅõǾî 8ºñÆ® ÄÄÇ»ÅÍÀÇ ¿·ÄÇÑ ÁöÁöÀÚ¿´´ø ÇÊÀÚÀÇ °¡½¿¿¡ »óó(?)°¡ µÇ¾ú´ø ±â¾ïÀÌ ³´Ù.
10¿©³âÀÌ Áö³ Áö±Ý ÄÄÇ»ÅÍ´Â ¹ßÀü¿¡ ¹ßÀüÀ» °ÅµìÇØ 64ºñÆ® CPU¿Í 64ºñÆ® ¿î¿µÃ¼Á¦°¡ µîÀåÇß´Ù. º» ¿¬Àç¿¡¼´Â 3ȸ¿¡ °ÉÃÄ ÀÌÁ¦ °ð ´ëÁß鵃 64ºñÆ® À©µµ¿ì¿¡¼ ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§ÇÑ °¡À̵带 Á¦°øÇÑ´Ù. ºÎµð ÇÊÀÚÀÇ 8ºñÆ® ½ÃÀý°ú °°Àº ½Ç¼ö¸¦ ¹üÇÏÁö ¸»°í Á» ´õ ³Ð¾îÁø 64ºñÆ® ¸ÞÆ®¸¯½º¿¡¼ ³×¿À¸¦ ãÀ» ¼ö Àֱ⸦ ¹Ù¶õ´Ù.
¿¬Àç °¡À̵å¿î¿µÃ¼Á¦ : À©µµ¿ì XP 64ºñÆ® ¿¡µð¼Ç, À©µµ¿ì 2003 64ºñÆ® ¿¡µð¼Ç
°³¹ßµµ±¸ : ¿¡µðÅÍ, 32/64ºñÆ® C/C++ ÄÄÆÄÀÏ·¯
±âÃÊÁö½Ä : C/C++ ÇÁ·Î±×·¡¹Ö, À©µµ¿ì ±¸Á¶ ÀÌÇØ
ÀÀ¿ëºÐ¾ß : 64ºñÆ® À©µµ¿ì¿¡¼ µ¿ÀÛÇÏ´Â ¸ðµç ÇÁ·Î±×·¥
¾ó¸¶ Àü ¹Ì±¹ ½Ã¾ÖƲ ±Ù±³ ·¹µå¸óµå¿¡ À§Ä¡ÇÑ MS º»»ç¿¡¼´Â ÀÎÅÚ°ú AMD ¹× MS °³¹ßÀÚµéÀÌ ÁÖÁ¦ ¹ßÇ¥ÀÚ·Î ³ª¿Í ´Ù¾çÇÑ 64ºñÆ® ÄÄÇ»ÆÃ °ü·Ã ÁÖÁ¦¸¦ ´Ù·é 64ºñÆ® °³¹ßÀÚ ¼¼¹Ì³ª¸¦ °³ÃÖÇß´Ù. ¼¼¹Ì³ª¿¡ Âü¼®ÇÑ MS °³¹ßÀÚµéÀº ¡°64ºñÆ® ÄÄÇ»ÅÍ¿¡¼ ÇÁ·Î±×·¡¹ÖÀ» ±¸ÇöÇÏ´Â °ÍÀÌ ±×·¸°Ô ¾î·Á¿î ÀÏÀÌ ¾Æ´Ï´Ù¡±¶ó°í ¼³¸íÇß´Ù.
16ºñÆ®¿¡¼ 32ºñÆ®·Î ¹Ù²ð ¶§¿¡ ºñÇØ 32ºñÆ®¿¡¼ 64ºñÆ®·Î °¡±â À§ÇØ ÇÊ¿äÇÑ ÀÏÀÇ ¾çÀº »ó´çÈ÷ ÀûÀ» °ÍÀ̶ó°í ¿¹»óÇϰí ÀÖ¾ú´Ù. ÇÏÁö¸¸ ½±´Ù°í ÇØ¼ ¾ÆÁÖ ÇÒÀÏÀÌ ¾ø´Ù´Â À̾߱â´Â ¾Æ´Ï´Ù. ÇöÀç 32ºñÆ® À©µµ¿ì¿¡¼ »ç¿ëµÇ´Â °¡Àå ´ëÁßÀûÀÎ CPU´Â ÀÎÅÚ È£È¯ÀÇ 32ºñÆ® CPU(AMDµµ ÀÎÅÚ È£È¯À̾ú´Ù)ÀÌ´Ù. 32ºñÆ® ÇÁ·Î±×·¥À» Á¦ÀÛÇÒ ¶§ ±âÁ¸ °³¹ßÀÚ´Â ÇϳªÀÇ ¼Ò½º¸¦ ÀÛ¼ºÇÏ°í ´Ü ÇϳªÀÇ ¹ÙÀ̳ʸ®¸¸À» »ý¼ºÇÏ¸é µÇ¾ú´Ù.
±×·¯³ª 64ºñÆ® À©µµ¿ì¿¡¼ ´ëÁßÈµÈ 64ºñÆ® CPU´Â Å©°Ô µÎ °¡Áö Á¾·ù·Î ±¸ºÐµÈ´Ù. IA64°ú x64ÀÌ´Ù. IA64´Â ÀÎÅÚ¿¡¼ ¸¸µç ¾ÆÀÌÅ´ϾöÀ» ±â¹ÝÀ¸·Î ÇÏ¸ç °³ÀÎ »ç¿ëÀÚº¸´Ù´Â ±â¾÷ ȯ°æ°ú °í¼º´É ÄÄÇ»ÆÃÀ» ¸ñÇ¥·Î Çϰí ÀÖ´Ù. x64´Â AMD64¸¦ ±â¹ÝÀ¸·Î Çϰí ÀÖÀ¸¸ç 32ºñÆ®ÀÇ È£È¯¼º°ú 64ºñÆ®ÀÇ ³ôÀº ¼º´ÉÀ» ¸ñÇ¥·Î Çϰí ÀÖ´Ù.
ÇöÀç´Â ÀÎÅÚ¿¡¼ EM64T¶ó´Â AMD64 CPUÀÇ Å¬·ÐÀ» Á¦ÀÛÇÒ ¸¸Å x64°¡ ´ëÁßÀûÀÎ ¼±È£ Ãø¸é¿¡¼ Á¶±Ý ´õ ¾Õ¼ ÀÖ´Â »óȲÀÌ´Ù. ÀÎÅÚÀÇ ½ÃÀå ¿¹ÃøÀÇ ½ÇÆÐ¶ó°í ÇÒ ¼öµµ Àִµ¥, MS´Â ÀÎÅÚÀÌ ÁÖµµÇÑ IA64 ½Ã½ºÅÛ ´ë½Å ¹Ì·¡¿¡´Â <±×¸² 1>°ú °°ÀÌ x64 ½Ã½ºÅÛÀÌ ÁÖ·ù°¡ µÉ °ÍÀ¸·Î ¿¹»óÇϰí ÀÖ´Ù.
 |
| <±×¸² 1> 64ºñÆ® ½Ã½ºÅÛÀÇ ÇöÀç¿Í ¹Ì·¡ µ¿Çâ |
IA64 ¶Ç´Â x64°¡ Àα⸦ ¾ó¸¶³ª ´õ ¸¹ÀÌ ²ô´Â°¡´Â »ç½Ç °³¹ßÀÚ¿¡°Ô ±×·¸°Ô Å« °ü½É»ç´Â ¾Æ´Ï´Ù. ´ÜÁö ÀÌ·¸°Ô µÎ ºÎ·ùÀÇ 64ºñÆ® ½Ã½ºÅÛÀ¸·Î ³ª´©¾îÁø »óȲÀº »ç¿ëÀÚ ÀÔÀå¿¡¼¾ß CPUÀÇ Á¾·ù°¡ ´Ù¾çÇØÁø ¸¸Å ¼±ÅÃÀÇ ÆøÀÌ ³Ð¾îÁ®¼ ÁÁÀ» ¼ö ÀÖÁö¸¸ °³¹ßÀÚ ÀÔÀå¿¡¼´Â Á¶±ÝÀº °ïȤ½º·¯¿î ÀÏÀÌ´Ù.
¿Ö³ÄÇÏ¸é »ý¼ºÇس»¾ß ÇÒ ¹ÙÀ̳ʸ®ÀÇ ¼ö°¡ µÎ °¡Áö ´õ Áõ°¡Çϱ⠶§¹®ÀÌ´Ù. ±âÁ¸ÀÇ 32ºñÆ® ½ÃÀý¿¡´Â ÇϳªÀÇ ¼Ò½º·Î ÇϳªÀÇ ¹ÙÀ̳ʸ®¸¸ »ý¼ºÇÏ¸é µÇÁö¸¸ ¾ÕÀ¸·Î ´Ù°¡¿Ã °¡±î¿î ¹Ì·¡¿¡´Â ÇϳªÀÇ ¼Ò½º·Î 32ºñÆ® ¹ÙÀ̳ʸ®, IA64 ¹ÙÀ̳ʸ®, x64 ¹ÙÀ̳ʸ®¸¦ ¸ðµÎ »ý¼ºÇØ¾ß Çϱ⠶§¹®¿¡ °³¹ßÀÚµéÀÇ ºÎ´ãÀº ´õ Ä¿Áö°Ô µÈ´Ù.
64ºñÆ® CPU Á¤º¸ ¾ò¾î¿À±â
64ºñÆ® À©µµ¿ì¿¡¼ ³» ½Ã½ºÅÛÀÇ CPU°¡ ÀÎÅÚÀÇ IA64ÀÎÁö x64ÀÎÁö¸¦ ¾Ë°í ½Í´Ù¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î? GetNativeSystemInfo() ÇÔ¼ö¸¦ ÀÌ¿ëÇϸé CPUÀÇ Á¾·ù¸¦ ¾Ë¾Æ ³¾ ¼ö ÀÖ´Ù. ÇÑ °¡Áö ÁÖÀÇÇÒ Á¡Àº 64ºñÆ® À©µµ¿ì¿¡¼¼öÇàµÇ´Â 32ºñÆ® ÇÁ·Î¼¼½º´Â GetNativeSystemInfo() ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¾ß¸¸ Á¤È®ÇÑ CPU Á¾·ù¸¦ ¾ò¾î ¿Ã¼ö ÀÖ°í, 64ºñÆ® ÇÁ·Î¼¼½º¶ó¸é GetSystemInfo() ÇÔ¼ö¸¦ »ç¿ëÇØµµ ¹«¹æÇÏ´Ù. 64ºñÆ® ÇÁ·Î¼¼½º¿¡¼ GetNativeSystemInfo() ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ³»ºÎÀûÀ¸·Î GetSystemInfo() ÇÔ¼ö¸¦ È£ÃâÇØ °á°ú¸¦ ¸®ÅÏÇÑ´Ù.
 |
| <Ç¥ 1> 64ºñÆ® À©µµ¿ì¿¡¼ CPU Á¾·ù¸¦ ¾ò¾î¿Ã ¼ö ÀÖ´Â ÇÔ¼ö |
ÀÌ ¹Û¿¡µµ 32ºñÆ® À©µµ¿ì¿¡¼´Â CPU¸¦ 32°³±îÁö Áö¿øÇßÁö¸¸ 64ºñÆ® À©µµ¿ì¿¡¼´Â ÃÖ´ë 64°³±îÁö Áö¿øÇÑ´Ù. À©µµ¿ì¿¡¼ ³»ºÎÀûÀ¸·Î CPU Á¤º¸¸¦ À¯ÁöÇÒ ¶§ °¢ ºñÆ®º°·Î ÇÑ CPU¾¿ ÇÒ´çÇϱ⠶§¹®¿¡ 64ºñÆ® À©µµ¿ì¿¡¼´Â ´õ ¸¹Àº 64°³ÀÇ CPU¸¦ Áö¿øÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù.
ÁÖÀÇÇÒ Á¡Àº 64ºñÆ® À©µµ¿ì¿¡¼ ½ÇÇàµÇ´Â 32ºñÆ® ÇÁ·Î¼¼½º´Â µÚ¿¡ ¼³¸íÇÒ WOW64°¡ CPU¿¡ ´ëÇÑ Á¤º¸¸¦ 32ºñÆ®·Î Á¦ÇÑÇϱ⠶§¹®¿¡ 32°³ÀÇ CPU¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î 64ºñÆ® À©µµ¿ì¿¡ 64°³ÀÇ CPU°¡ À־ 32ºñÆ® ÇÁ·Î¼¼½º¿¡¼ GetProcessAffinityMask() ÇÔ¼ö³ª SetThreadAffinityMask() °°Àº ÇÔ¼ö¸¦ ÀÌ¿ëÇϸé 32°³ÀÇ CPU¿¡ ´ëÇØ¼¸¸ °ªÀ» ¾ò¾î¿À°Å³ª ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
À©µµ¿ì ¾ÈÀÇ ¶Ç ÇϳªÀÇ À©µµ¿ì WOW64
¿ì¸®´Â ¾ÆÁ÷ 32ºñÆ®ÀÇ ½Ã´ë¿¡ »ì°í ÀÖÀ¸¸ç °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ¿öµåÇÁ·Î¼¼¼, °ÔÀÓ, ÀÎÅÍ³Ý ¸Þ½ÅÀú ¸ðµÎ 32ºñÆ® ÇÁ·Î±×·¥ÀÌ´Ù. ÇѶ§ ½ºÆ¼ºì À⽺°¡ ¸¸µç Çõ½ÅÀûÀÎ ¿öÅ©½ºÅ×À̼ǰú ¿î¿µÃ¼Á¦¿´´ø ³Ø½ºÆ®¿Í ³Ø½ºÆ®½ºÅÜÀÌ ÄÄÇ»ÅÍ ¾÷°è¿¡ Å« Ãæ°ÝÀ¸·Î ´Ù°¡¿Â ÀûÀÌ ÀÖ¾ú´Ù.
±×·¯³ª ±×°ÍµéÀÌ ½ÇÆÐÇÒ ¼ö¹Û¿¡ ¾ø¾ú´ø °¡Àå Å« ÀÌÀ¯ Áß Çϳª°¡ ½ÇÁ¦ ¼Òºñ°¡°¡ ¾µ ¼ö ÀÖ´Â ÀÀ¿ë ¼ÒÇÁÆ®¿þ¾î°¡ ±ØÈ÷ Àû¾ú´Ù´Â Á¡ÀÌ´Ù. ÀÌ¿Í °°ÀÌ ¹«¾ð°¡ »õ·Î¿î °ÍÀ» ¸¸µé ¶§ ÀÌ»óÀûÀÎ °³³äÀ» ½ÇüÈÇÏ´Â °Íµµ Áß¿äÇÏÁö¸¸ ÀÌÀü °Í¿¡ ´ëÇÑ È£È¯¼ºÀ» Á¦°øÇÏÁö ¸øÇÑ´Ù¸é °á±¹ ½ÇÆÐÇÒ ¼ö¹Û¿¡ ¾ø´Ù.
ȣȯ¼ºÀÌ ±â¼ú°ú ½ÃÀå¿¡ Å« ¿µÇâÀ» ³¢Ä£´Ù´Â °ÍÀº ¾ÆÀÌÅ´Ͼö°ú ¾ÆÀÌÅ´Ͼö2·Î 64ºñÆ® CPUÀÇ µ¶ÀÚ ³ë¼±À» °È´ø µ¶ºÒÀ屺 ÀÎÅÚÀÌ °á±¹ ȣȯ¼ºÀ» Áß½ÃÇÑ AMD64 Áø¿µÀÇ Àα⠾տ¡ ½Âº¹ÇÏ°í ¿ÀÈ÷·Á EM64T¶ó´Â Ŭ·Ð CPU¸¦ ¸¸µé¾î¾ß Çß´Ù´Â °Í¿¡¼µµ ¾Ë ¼ö ÀÖ´Ù. Áï, »ç¿ëÀÚ¿¡°Ô »ç¿ëµÇÁö ¾Ê°í ÆÈ¸®Áö ¾Ê´Â ±â¼úÀº »çÀåµÇ±â ½±´Ù. MS´Â ÀÌ·± »ç½ÇÀ» ¿¹ÀüºÎÅÍ ³Ê¹«³ª Àß ¾Ë°í ÀÖ¾ú´Ù. MS-DOS¿¡¼ À©µµ¿ì·Î ³Ñ¾î°¥ ¶§µµ »õ·Î¿î ±â¼úº¸´Ù´Â ÀÌÀü ¹öÀüÀÇ ÇÏÀ§ ȣȯ¼ºÀ» ¼±ÅÃÇß°í °á±¹ ¿ÏÀüÇÑ °³ÀÎ »ç¿ëÀÚ¿ë 32ºñÆ® ¿î¿µÃ¼Á¦´Â À©µµ¿ì 2000¿¡ ¿Í¼¾ß ºûÀ» º¼ ¼ö ÀÖ¾ú´Ù.
ÀÌ·¸µí ȣȯ¼ºÀ» Áß½ÃÇÏ´Â MS´Â »õ·Î¿î 64ºñÆ® À©µµ¿ì¿¡¼ ±âÁ¸ÀÇ 32ºñÆ® ÇÁ·Î±×·¥ÀÌ µ¿ÀÛÇϵµ·Ï Çϱâ À§ÇØ WOW(Windows On Windows)64¸¦ žÀçÇϰí ÀÖ´Ù. 64ºñÆ® À©µµ¿ì´Â ´ë´Ù¼öÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¿ÏÀüÇÑ 64ºñÆ®·Î Æ÷ÆÃµÇ±â Àü±îÁö WOW¸¦ ÅëÇØ 32ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϰí ÀÖ´Ù.
±×·¯³ª ¸ðµç °æ¿ì¿¡ ȣȯ¼ºÀÌ ¿ì¼±½ÃµÇ´Â °ÍÀº ¾Æ´Ï´Ù. 64ºñÆ® À©µµ¿ì¿¡¼´Â 16ºñÆ® ÇÁ·Î¼¼½º´Â ´õ ÀÌ»ó µ¿ÀÛÇÒ ¼ö ¾øÀ¸¸ç Ä¿³Î¸ðµå µå¶óÀ̹ö´Â WOW64¿Í °°Àº ¿¡¹Ä·¹ÀÌ¼Ç ·¹À̾ Á¸ÀçÇÏÁö ¾Ê¾Æ¼ ¹Ýµå½Ã 64ºñÆ®·Î Æ÷ÆÃÇØ¾ß ÇÑ´Ù. °á·ÐÀûÀ¸·Î 64ºñÆ® À©µµ¿ì¿¡¼´Â WOW64¸¦ ÅëÇØ ¼öÇàµÇ´Â 32ºñÆ® ÇÁ·Î¼¼½º¿Í 64ºñÆ® À©µµ¿ì »ó¿¡¼ °ð¹Ù·Î ¼öÇàµÇ´Â 64ºñÆ® ÇÁ·Î¼¼½º°¡ ¸ðµÎ µ¿ÀÛÇÒ ¼ö ÀÖ´Ù.
WOW64ÀÇ ±¸¼º°ú µ¿ÀÛ ¹æ½Ä
WOW64´Â Ä¿³Î¸ðµå°¡ ¾Æ´Ñ »ç¿ëÀÚ¸ðµå¿¡¼ µ¿ÀÛÇϸç, Ä¿³Î¸ðµå¿Í ±âÁ¸ÀÇ x86 ¹öÀüÀÇ Ntdll.dll »çÀÌ¿¡ À§Ä¡Çؼ 32ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ API È£ÃâÀ» Áß°£¿¡¼ °¡·Îæ ÈÄ 64ºñÆ® API È£Ãâ·Î º¯È¯ÇÑ´Ù. WOW64¸¦ ±¸¼ºÇÏ´Â DLL°ú °¢°¢ÀÇ ±â´ÉÀº <Ç¥ 2>¿Í °°´Ù.
 |
| <Ç¥ 2> WOW64¸¦ ±¸¼ºÇÏ´Â DLL |
Á» ´õ ÀÚ¼¼È÷ ¼³¸íÇϸé 32ºñÆ® ÇÁ·Î¼¼½º°¡ ½ÃÀÛÇÒ ¶§ wow64.dllÀº 32ºñÆ® ¹öÀüÀÇ Ntdll.dllÀ» ·ÎµåÇÑ´Ù. À̶§ Ntdll.dllÀº ÇÁ·Î¼¼½º ½ÇÇà¿¡ ÇÊ¿äÇÑ 32ºñÆ® DLLµéÀ» ·ÎµåÇÑ´Ù.
¾Ë¾Æ µÎ¾î¾ß ÇÒ Á¡Àº WOW64¿¡¼ »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ 32ºñÆ® DLLµéÀº º°´Ù¸¥ ¼öÁ¤ ¾øÀÌ ¼³Ä¡µÇ¾î ÀÖÁö¸¸ 64ºñÆ® ÇÁ·Î¼¼½º¿Í ¸Þ¸ð¸®¸¦ °øÀ¯ÇØ¾ß ÇÏ´Â ¸î °³ÀÇ 32ºñÆ® DLLµéÀº WOW64¿¡¼µµ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï Á¶±Ý ¼öÁ¤µÇ¾ú´Ù´Â »ç½ÇÀÌ´Ù. ±×¸®°í 64ºñÆ® Ntdll.dllÀº 32ºñÆ® ÇÁ·Î¼¼½º¿¡¼ ·ÎµåÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ DLLÀε¥, wow64.dllÀº 64ºñÆ® ntdll.dll°ú 32ºñÆ® ntdll.dll »çÀÌ¿¡¼ ½éÅ·À» ¼öÇàÇØ¼ 32ºñÆ® ÇÁ·Î¼¼½ºÀÇ ½ÇÇàȯ°æÀ» ¸¸µé¾î ÁØ´Ù.
½éÅ·À» Ä¿³Î¸ðµå°¡ ¾Æ´Ñ »ç¿ëÀÚ¸ðµå¿¡¼ ¼öÇàÇÏ´Â ÀÌÀ¯´Â ½éÅ· °úÁ¤ÀÇ ¹ö±×·Î ÀÎÇØ BSOD(Blue Screen Of Death)°¡ ¹ß»ýÇÏ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇؼÀÌ´Ù. WOW64¸¦ ±¸¼ºÇÏ´Â ¸ðµâ°£ÀÇ °ü°è´Â <±×¸² 2>¸¦ »ìÆìº¸¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù.
 |
| <±×¸² 2> WOW64ÀÇ ¾ÆÅ°ÅØÃ³ |
±×·¸´Ù¸é WOW64 ȯ°æ¿¡¼ ¼öÇàµÇ´Â 32ºñÆ® ÇÁ·Î¼¼½ºÀÇ ¼º´ÉÀº ¾î¶³±î? ¿©·¯ °¡Áö ¿äÀο¡ ÀÇÇØ ¼öÇà ¼º´ÉÀÌ °áÁ¤µÉ ¼ö Àִµ¥ ù ¹øÂ°·Î ¾î¶² CPU¿¡ ÀÇÇØ ¼öÇàµÇ´À³Ä°¡ Áß¿äÇÏ´Ù. ¾ÆÀÌÅ´Ͼö°ú °°Àº IA64 °è¿ÀÇ CPU´Â wow64cpu.dllÀÌ 32ºñÆ® ¸í·É¾î¸¦ ¿¡¹Ä·¹À̼ÇÇϱ⠶§¹®¿¡ ¾Æ¹«·¡µµ ¼º´ÉÀÌ ³·À» ¼ö¹Û¿¡ ¾ø´Ù.
±×·¯³ª AMD64³ª EM64T°°Àº x64 °è¿¿¡¼ ¼öÇàµÇ´Â 32ºñÆ® ÇÁ·Î¼¼½º´Â 32ºñÆ® ¸í·É¾î¸¦ CPU¿¡¼ Á÷Á¢ ¼öÇàÇϱ⠶§¹®¿¡ 32ºñÆ® À©µµ¿ì¿¡¼ ¼öÇàÇÏ´Â °Í°ú °ÅÀÇ µ¿ÀÏÇÑ ¼º´ÉÀ¸·Î ¼öÇàÇÒ ¼ö ÀÖ´Ù. WOW64¿¡¼ ¸Þ¸ð¸®¸¦ ´Ù·ç´Â °Íµµ ÀÌ µÎ °è¿ÀÇ CPU¿¡ µû¶ó Á¶±Ý ´Ù¸£´Ù. IA64 °è¿Àº ±âº»ÀûÀ¸·Î 8K ÆäÀÌÁö¸¦ »ç¿ëÇÏ°Ô ¶§¹®¿¡ AWE(Address Windowing Extention)¸¦ »ç¿ëÇÒ ¼ö ¾ø°í GetWriteWatch(), ResetWriteWatch(), ReadFileScatter(), WriteFileGather() ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù.
¹Ý¸é¿¡ x64 °è¿Àº ±âÁ¸ÀÇ 32ºñÆ® ½Ã½ºÅÛ°ú µ¿ÀÏÇÑ 4K ÆäÀÌÁö¸¦ »ç¿ëÇϱ⠶§¹®¿¡ AWE¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó »ç¿ëÀÚ ÁÖ¼Ò °ø°£µµ ±âÁ¸ÀÇ 2GB°¡ ¾Æ´Ñ 4GBÀÇ °¡»ó ÁÖ¼Ò °ø°£À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀϹÝÀûÀÎ °¡À̵å´Â WOW64¸¦ ÀÌ¿ëÇØ ±âÁ¸ÀÇ ¼ö¸¹Àº 32ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥À» ¼öÇàÇÒ ¼ö ÀÖÁö¸¸ WOW64¿¡¼ ¼öÇàÇÏ·Á´Â ÇÁ·Î±×·¥ÀÌ ³ôÀº ¼º´ÉÀ» ¿ä±¸ÇÏ´Â ¼¹ö ÀÀ¿ë ÇÁ·Î±×·¥À̶ó¸é ºü¸¥ ½ÃÀÏ ³»¿¡ ¿ÏÀüÇÑ 64ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î Á¦ÀÛÇÏ±æ ¹Ù¶õ´Ù. MS´Â WOW64 »ó¿¡¼ ¼¹ö ÀÀ¿ë ÇÁ·Î±×·¥À» ±¸µ¿ÇÏ´Â °ÍÀ» ±ÇÀåÇÏÁö ¾Ê´Â´Ù°í ÇÑ´Ù.
64ºñÆ®¿Í 32ºñÆ® ÇÁ·Î¼¼½º/¸Þ½ÃÁö ±¸ºÐÇϱâ
ÇöÀç MS¿¡¼´Â ÇϳªÀÇ ¼Ò½º·Î 32ºñÆ® ¹ÙÀ̳ʸ®¿Í 64ºñÆ® ¹ÙÀ̳ʸ®¸¦ °³¹ßÇÒ °ÍÀ» ±ÇÀåÇϰí ÀÖ´Ù. ÀÌ °¡À̵忡 ¸ÂÃß¾î ÇÁ·Î±×·¥À» °³¹ßÇÏ´Ù º¸¸é ÀÚ½ÅÀÌ 32ºñÆ® ÇÁ·Î¼¼½ºÀÎÁö ¶Ç´Â 64ºñÆ® ÇÁ·Î¼¼½ºÀÎÁö ÆÇº°ÇØ¾ß ÇÒ °æ¿ì°¡ »ý±â´Âµ¥ IsWow64Process() ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ½±°Ô ÆÇº°ÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â ÇÁ·Î¼¼½º ÇÚµéÀ» ÀÎÀÚ·Î ¹Þ¾ÆµéÀ̹ǷΠ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ 32ºñÆ® ÇÁ·Î¼¼½º ¿©ºÎ¸¦ ÆÇ´ÜÇÏ´Â µ¥ À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ´Ù.
±×·¸´Ù¸é 64ºñÆ® ÇÁ·Î¼¼½º¿¡¼ ÇöÀç ¹ÞÀº À©µµ¿ì ¸Þ½ÃÁö°¡ 32ºñÆ®¿¡¼ ¹ß»ýÇÑ °ÍÀÎÁö 64ºñÆ®¿¡¼ ¹ß»ýÇÑ °ÍÀÎÁö¸¦ ±¸ºÐÇØ¾ß ÇÒ ¶§´Â ¾î¶»°Ô ÇØ¾ß ÇÒ±î? 64ºñÆ® À©µµ¿ì¿¡¼´Â IsWow64Message() ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ÇöÀç ¾²·¹µå¿¡¼ ¸¶Áö¸·À¸·Î ¹ÞÀº À©µµ¿ì ¸Þ½ÃÁö°¡ 32ºñÆ®¿¡¼ ¹ß»ýÇÑ °ÍÀÎÁö ÆÇº°ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î À©µµ¿ì ¸Þ½ÃÁö ¾È¿¡ Æ÷ÀÎÅÍ Å¸ÀÔÀ» Æ÷ÇÔÇÏ´Â µ¥ÀÌÅͰ¡ ÀÖ°í ±× Æ÷ÀÎÅͰ¡ 32ºñÆ® Æ÷ÀÎÅÍÀÏ °æ¿ì ÁÖÀÇÇØ¾ß Çϴµ¥ ÀÌ·± °æ¿ì IsWow64Message() ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ÆÇº°ÇÒ ¼ö ÀÖ´Ù.
 |
| <Ç¥3> 32ºñÆ®/64ºñÆ® ÇÁ·Î¼¼½º¿Í ¸Þ½ÃÁö¸¦ ±¸ºÐÇϴµ¥ »ç¿ëµÇ´Â ÇÔ¼ö |
·¹Áö½ºÆ®¸® Á¢±ÙÇϱâ
¾Õ¼ º¸¾ÒµíÀÌ 64ºñÆ® À©µµ¿ì¿¡´Â 32ºñÆ® ÇÁ·Î¼¼½º¿Í 64ºñÆ® ÇÁ·Î¼¼½º°¡ °øÁ¸ÇÑ´Ù. 64ºñÆ® À©µµ¿ì¿¡¼´Â ÀÌ µÎ Á¾·ùÀÇ ÇÁ·Î¼¼½º°¡ Á¢±ÙÇÏ´Â µÎ °¡Áö °üÁ¡ÀÇ ·¹Áö½ºÆ®¸®°¡ Á¸ÀçÇÏ°Ô µÈ´Ù. Çϳª´Â WOW64¸¦ ÅëÇØ ¼öÇàµÇ´Â 32ºñÆ® ÇÁ·Î¼¼½º°¡ Á¢±ÙÇÏ´Â ·¹Áö½ºÆ®¸®ÀÌ°í ´Ù¸¥ Çϳª´Â ¼ø¼öÇÑ 64ºñÆ® ÇÁ·Î¼¼½º°¡ Á¢±ÙÇÏ´Â ·¹Áö½ºÆ®¸®ÀÌ´Ù.
32ºñÆ®¿Í 64ºñÆ® ÇÁ·Î¼¼½º °£¿¡ ¼·Î ´Ù¸¥ °üÁ¡À» À¯ÁöÇÏ´Â ÀÌÀ¯´Â Å©°Ô µÎ °¡Áö°¡ ÀÖ´Ù. ù ¹øÂ°´Â 32ºñÆ® ÇÁ·Î¼¼½º¿Í 64ºñÆ® ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ·¹Áö½ºÆ®¸® »óŸ¦ ºÐ¸®ÇÏ°í °¢°¢ ÀúÀåÇÏ´Â ¼³Á¤ °ªµéÀ» Áߺ¹µÇÁö ¾Ê°Ô ±¸ºÐÇϱâ À§ÇؼÀÌ´Ù. µÎ ¹øÂ°´Â ¼·Î °°Àº À§Ä¡ÀÇ ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇÒ °æ¿ì »óÈ£°£¿¡ °ü¸®ÇÏ´Â °ªµéÀ» ÈѼÕÇÒ ¼ö Àֱ⠶§¹®¿¡ ¾ÈÀüÇÑ ¼öÇàȯ°æÀ» Á¦°øÇϱâ À§Çؼ 32ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥°ú 64ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥ ·¹Áö½ºÆ®¸®¸¦ ºÐ¸®½ÃÄ×´Ù.
<ȸé 1>À» º¸¸é 32ºñÆ® ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â Wow6432Node ¹ØÀÇ Microsoft Ű¿Í 64ºñÆ® ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â Microsoft ۰¡ ³ª´©¾îÁ® ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù.
 |
| <ȸé 1> 64ºñÆ® À©µµ¿ì¿¡ Á¸ÀçÇÏ´Â µÎ °¡Áö ·¹Áö½ºÆ®¸® ºä |
³Ê´Â ³Ê´ë·Î ³ª´Â ³ª´ë·Î - ·¹Áö½ºÆ®¸® Á¢±Ù°æ·Î º¯°æ
WOW64´Â 32ºñÆ® ÇÁ·Î¼¼½º°¡ ·¹Áö½ºÆ®¸®¸¦ »ý¼ºÇϰųª ¿ÀÇÂÇÏ·Á°í ÇÒ ¶§ ¸î °³ÀÇ Å°µé¿¡ ´ëÇØ¼´Â ·¹Áö½ºÆ®¸® Ű °æ·Î¿¡ Wow6432Node¸¦ µ¡ºÙÀδÙ. ÀÌ·¸°Ô ÇØ¼ 64ºñÆ® ÇÁ·Î¼¼½º°¡ Á¢±ÙÇÏ´Â ·¹Áö½ºÆ®¸® °æ·Î¿Í 32ºñÆ® ÇÁ·Î¼¼½º°¡ Á¢±ÙÇÏ´Â ·¹Áö½ºÆ®¸® °æ·Î°¡ º¯°æµÈ´Ù. ¸ðµç ·¹Áö½ºÆ®¸® ۰¡ ÀÌ·¸°Ô Á¢±Ù°æ·Î º¯°æ(Redirection)ÀÌ µÇ´Â °ÍÀº ¾Æ´Ñµ¥ ÁÖ·Î ´ÙÀ½°ú °°Àº ۵éÀÌ ºÐ¸®µÇ¸ç ÀÌ Å°µéÀ» Á¦¿ÜÇÑ ´Ù¸¥ ۵éÀº ÀϹÝÀûÀ¸·Î 32ºñÆ®¿Í 64ºñÆ® ÇÁ·Î¼¼½º°¡ °°Àº ·¹Áö½ºÆ®¸® À§Ä¡¿¡ Á¢±ÙÇÑ´Ù.
¡ß HKEY_LOCAL_MACHINE\Software
¡ß HKEY_LOCAL_MACHINE\Software\Classes
¡ß HKEY_USER\*\Software\Classes
¡ß HKEY_USERS\*_Classes
¡ß *´Â °¢ »ç¿ëÀÚÀÇ SID ÀÌ´Ù.
·¹Áö½ºÆ®¸® Ű Á¢±Ù°æ·Î º¯°æÀº ·ÎÄà ½Ã½ºÅÛ°ú ¿ø°Ý ½Ã½ºÅÛ¿¡ µû¶ó ´Ù¸£°Ô ÀϾ´Âµ¥ À©µµ¿ì ¼¹ö 2003 SP1 ÀÌÀü¿¡´Â ·ÎÄýýºÅÛ ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÒ ¶§¸¸ Ű °æ·ÎÀÇ º¯°æÀÌ ¹ß»ýÇϰí RegConnectRegistry ÇÔ¼ö¸¦ »ç¿ëÇØ ¿ø°Ý ½Ã½ºÅÛ¿¡¼ ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÒ ¶§´Â Ű °æ·ÎÀÇ º¯°æ ¾øÀÌ 64ºñÆ® ·¹Áö½ºÆ®¸®¿¡¸¸ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª À©µµ¿ì ¼¹ö 2003 SP1¸¦ Æ÷ÇÔÇÑ ÀÌÈÄ ¹öÀüÀÇ 64ºñÆ® À©µµ¿ì¿¡¼´Â ¿ø°Ý ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ´Â ½Ã½ºÅÛÀÌ 32ºñÆ® À©µµ¿ì¶ó¸é 32ºñÆ® ·¹Áö½ºÆ®¸®¸¦ Á¢±ÙÇÒ ¼ö ÀÖ°í 64ºñÆ® ½Ã½ºÅÛÀ̶ó¸é 64ºñÆ® ·¹Áö½ºÆ®¸®¸¦ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.
³Ê¿Í ³ª´Â Çϳª - ·¹Áö½ºÆ®¸® º¹»ç¡¤°øÀ¯
´ÙÀ½°ú °°Àº ½Ã³ª¸®¿À¸¦ »ý°¢Çغ¸ÀÚ. ¸ÕÀú ±ú²ýÇÑ »óÅÂÀÇ 64ºñÆ® À©µµ¿ì¸¦ ¼³Ä¡Çϸé .doc ÆÄÀÏ¿¡ ´ëÇÑ ±âº» ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î Wordpad.exe°¡ 64ºñÆ® ·¹Áö½ºÆ®¸®¿¡ µî·ÏµÇ¾î ÀÖ´Ù. ÀÌ Á¤º¸´Â 32ºñÆ® ·¹Áö½ºÆ®¸®¿¡µµ º¹»ç°¡ µÈ´Ù. ¸¸¾à ÀÌ ¿î¿µÃ¼Á¦¿¡ 32ºñÆ® ¹öÀüÀÇ MS ¿ÀÇǽº¸¦ ¼³Ä¡ÇÑ´Ù¸é .doc ÆÄÀÏ¿¡ ´ëÇÑ ±âº» ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î 32ºñÆ® ·¹Áö½ºÆ®¸®¿¡ winword.exe°¡ µî·ÏµÈ´Ù. ±×¸®°í ÀÌ Á¤º¸´Â 64ºñÆ® ·¹Áö½ºÆ®¸®¿¡µµ º¹»ç°¡ µÈ´Ù. ÀÌ °æ¿ì 32ºñÆ®¿Í 64ºñÆ®¿¡ »ó°ü¾øÀÌ .doc ÆÄÀÏ¿¡ ´ëÇÑ ±âº» ÀÀ¿ë ÇÁ·Î±×·¥Àº 32ºñÆ® ¹öÀüÀÇ winword.exe°¡ µÈ´Ù.
¿©±â¿¡ 64ºñÆ® ¹öÀüÀÇ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ¿ÀÇǽº¸¦ ¼³Ä¡ÇÑ´Ù¸é ¾î¶»°Ô µÉ±î? 64ºñÆ® ·¹Áö½ºÆ®¸®¿¡ 64ºñÆ® ¹öÀüÀÇ winword.exe °æ·Î°¡ µî·ÏµÇ°í ÀÌ °ªÀº 32ºñÆ® ·¹Áö½ºÆ®¸®¿¡µµ º¹»çµÈ´Ù. ÃÖÁ¾ÀûÀ¸·Î´Â .doc ÆÄÀÏ¿¡ ´ëÇÑ ±âº» ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î 64ºñÆ® ¹öÀüÀÇ winword.exe°¡ µî·ÏµÈ °ÍÀ̰í 32ºñÆ®³ª 64ºñÆ® »ó°ü¾øÀÌ °°Àº °æ·ÎÀÇ winword.exe¸¦ »ç¿ëÇÏ°Ô µÈ´Ù. °á·ÐÀûÀ¸·Î 32ºñÆ®¿Í 64ºñÆ® ·¹Áö½ºÆ®¸® Áß ¾î¶² ۵éÀº º¯°æÀÌ ¹ß»ýÇÏ¸é ¼·Î º¹»çÇÔÀ¸·Î¼ 32ºñÆ®¿Í 64ºñÆ®ÀÇ ¼³Á¤À» µ¿±âÈÇϰí 64ºñÆ® À©µµ¿ì¿¡¼ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ À¯¿¬ÇÏ°Ô µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù.
COMÀÇ °æ¿ì¸¦ »ý°¢ÇØ º¸¸é º°µµÀÇ ÇÁ·Î¼¼½º·Î ¼öÇàµÇ´Â Out-of-Process COM µî·ÏÀÇ °æ¿ì ¾Õ¼ ¼³¸íÇÑ °Íó·³ 32ºñÆ®¿Í 64ºñÆ® ·¹Áö½ºÆ®¸® °£¿¡ º¹»ç°¡ ÀϾ¼ ÃÖÁ¾ÀûÀ¸·Î ±â·ÏÇÑ °ªÀÌ µ¿±âÈµÇ°Ô µÈ´Ù. ¹Ý¸é¿¡ °°Àº ÇÁ·Î¼¼½º ÁÖ¼Ò °ø°£ ¾È¿¡¼ µ¿ÀÛÇÏ´Â In-Process COMÀÇ °æ¿ì´Â º¹»ç°¡ ÀÌ·ç¾îÁöÁö ¾Ê°í 32ºñÆ®´Â COMÀº 32ºñÆ® ·¹Áö½ºÆ®¸®¿¡ 64ºñÆ® COMÀº 64ºñÆ® ·¹Áö½ºÆ®¸®¿¡ µî·ÏÀÌ µÈ´Ù.
ÀÌ·± Çö»óÀº ¾î¼¸é ³Ê¹«³ª ´ç¿¬ÇÒ °á°úÀε¥ 32ºñÆ®¿Í 64ºñÆ® °£¿¡ IPC³ª RPC´Â Çã¿ëµÇ´Â ¹Ý¸é 32ºñÆ® ¸ðµâÀÌ 64ºñÆ® ÇÁ·Î¼¼½º ÁÖ¼Ò°ø°£ ¾È¿¡¼ µ¿ÀÛÇÒ ¼ö ¾ø°í 64ºñÆ® ¸ðµâÀÌ 32ºñÆ® ÇÁ·Î¼¼½º ÁÖ¼Ò°ø°£ ¾È¿¡¼ µ¿ÀÛÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ´ÙÀ½ ۵éÀº 32ºñÆ®¿Í 64ºñÆ® ·¹Áö½ºÆ®¸®¿¡ º°µµ·Î Á¸ÀçÇÏÁö¸¸ º¯°æÀÌ ¹ß»ýÇÒ °æ¿ì 32ºñÆ®¿Í 64ºñÆ® Ű °£¿¡ º¹»ç¸¦ ¼öÇàÇØ ³»¿ëÀ» ÀÏÄ¡ ½ÃŲ´Ù.
¡ß HKEY_LOCAL_MACHINE\Software\Classes ÀϺÎ
¡ß HKEY_LOCAL_MACHINE\Software\Microsoft\COM3
¡ß HKEY_LOCAL_MACHINE\Software\Microsoft\Ole
¡ß HKEY_LOCAL_MACHINE\Software\Microsoft\EventSystem
¡ß HKEY_LOCAL_MACHINE\Software\Microsoft\RPC
´ÙÀ½ ۵éÀº 32ºñÆ®¿Í 64ºñÆ® ·¹Áö½ºÆ®¸®°¡ º°µµ·Î Á¸ÀçÇÏÁö ¾Ê°í 32ºñÆ®¿Í 64ºñÆ® ÇÁ·Î¼¼½º°¡ °øÀ¯Çؼ »ç¿ëÇÑ´Ù.
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ SystemCertificates
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Cryptography\ Services
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Classes\ HCP
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ EnterpriseCertificates
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ MSMQ
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ NetworkCards
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ ProfileList
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ Perflib
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ Print
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ Ports
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Telephony\ Locations
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Policies
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Group Policy
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Policies
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Setup\ OC Manager
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Software\ Microsoft\ Shared Tools\ MSInfo
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Setup
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ CTF\ TIP
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ CTF\ SystemShared
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ Fonts
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ RAS
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Driver Signing
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Non-Driver Signing
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Cryptography\ Calais\ Current
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Cryptography\ Calais\ Readers
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ Time Zones
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Transaction Server
¡ß HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Control Panel\ Cursors\ Schemes
´ÙÀ½ ۵éÀº 32ºñÆ® ·¹Áö½ºÆ®¸® Ű¿¡ º¯°æÀÌ ¹ß»ýÇϸé 64ºñÆ® ·¹Áö½ºÆ®¸®·Î º¹»ç¸¦ Çϰí 32ºñÆ® ·¹Áö½ºÆ®¸® Ű °ªÀº »èÁ¦µÈ´Ù. ÀÌ Å°µéÀÌ Æ¯º°ÇÏ°Ô µ¿ÀÛÇÏ´Â ÀÌÀ¯´Â ÁÖ·Î »ç¿ëÀÚ°¡ ·Î±×¿ÂµÉ ¶§ »ç¿ëµÇ´Â Ű¿©¼ 32ºñÆ®¿Í 64ºñÆ® ·¹Áö½ºÆ®¸® ¾çÂÊ¿¡ °ªÀÌ ±â·ÏµÈ´Ù¸é ÇϳªÀÇ ÇÁ·Î±×·¥À» µÎ ¹ø¾¿ ¼öÇàÇÏ°Ô µÉ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. ±×·¡¼ 64ºñÆ® ·¹Áö½ºÆ®¸®¿¡¸¸ °ªÀ» À¯ÁöÇÏ´Â °ÍÀÌ´Ù.
¡ß HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows\ CurrentVersion\ Run
¡ß HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows\ CurrentVersion\ RunOnce
¡ß HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows\ CurrentVersion\ RunOnceEx
32ºñÆ®¿Í 64ºñÆ® ·¹Áö½ºÆ®¸® ³Ñ³ªµé±â
64ºñÆ® À©µµ¿ì¿¡¼´Â Ưº°ÇÑ ÀÛ¾÷À» ÇÏÁö ¾Ê´Â´Ù¸é 32ºñÆ® ÇÁ·Î¼¼½º´Â 32ºñÆ® ·¹Áö½ºÆ®¸®¿¡ Á¢±ÙÇÏ°Ô µÇ°í 64ºñÆ® ÇÁ·Î¼¼½º´Â 64ºñÆ® ·¹Áö½ºÆ®¸®¿¡¸¸ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ¸¸ÀÏ 32ºñÆ® ÇÁ·Î¼¼½º°¡ 64ºñÆ® ÇÁ·Î¼¼½º¸¦ Á¢±ÙÇÏ´Â °ÍÀ» ¿øÇϰųª 64ºñÆ® ÇÁ·Î¼¼½º°¡ 32ºñÆ® ÇÁ·Î¼¼½º¸¦ Á¢±ÙÇÏ´Â °ÍÀ» ¿øÇÑ´Ù¸é RegOpenKeyEx / RegCreateKeyEx / RegDeleteKeyEx¿Í °°Àº ·¹Áö½ºÆ®¸® °ü·Ã API¸¦ »ç¿ëÇÒ ¶§ Ưº°ÇÑ Ç÷¡±×¸¦ ºÎ¿©ÇÏ¸é ¾çÂÊ ¸ðµÎÀÇ ·¹Áö½ºÆ®¸®¸¦ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ±× Ç÷¡±×´Â <Ç¥ 4>¿Í °°´Ù.
 |
| <Ç¥ 4> 32ºñÆ®/64ºñÆ® ·¹Áö½ºÆ®¸®¸¦ Á¢±ÙÇÏ´Â ÇÔ¼ö¿¡¼ »ç¿ëµÇ´Â ÀÎÀÚ |
ÆÄÀϽýºÅÛ Á¢±ÙÇϱâ
Á¶±Ý ¸ÕÀú »ý°¢Çغ» µ¶ÀÚ¶ó¸é ¾Õ¼ ·¹Áö½ºÆ®¸®¸¦ ÅëÇØ º¸¾ÒµíÀÌ 64ºñÆ® À©µµ¿ì¿¡¼ WOW64¸¦ ÅëÇØ ¼öÇàµÇ´Â 32ºñÆ® ÇÁ·Î¼¼½º¿Í ÀϹÝÀûÀÎ 64ºñÆ® ÇÁ·Î¼¼½º´Â ¼·Î ´Ù¸¥ ÆÄÀϽýºÅÛ ºä¸¦ °¡Áö°í ÀÖ´Ù´Â °ÍÀ» ¿¹»óÇÒ ¼ö ÀÖ´Ù. 64ºñÆ® À©µµ¿ì¿¡¼´Â µÎ Á¾·ùÀÇ ÇÁ·Î¼¼½º°¡ ¼·Î ´Ù¸¥ ÆÄÀϽýºÅÛ ºä¸¦ °¡Áö°Ô µÇ´Â °ÍÀº ¼·Î ÂüÁ¶ÇÏ´Â ÆÄÀÏÀ» ºÐ¸®Çؼ 64ºñÆ® ÇÁ·Î¼¼½º´Â 64ºñÆ® DLLÀ» »ç¿ëÇϰí 32ºñÆ® ÇÁ·Î¼¼½º´Â 32ºñÆ® DLLÀ» »ç¿ëÇÏ°Ô Çϱâ À§ÇؼÀÌ´Ù. ±×·¡¼ 64ºñÆ® À©µµ¿ì¸¦ ¼³Ä¡ÇÏ°Ô µÇ¸é <ȸé 2>¿Í °°ÀÌ ½Ã½ºÅÛ µð·ºÅ丮°¡ °¢°¢ Á¸ÀçÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.
 |
| <ȸé 2> 64ºñÆ® À©µµ¿ìÀÇ ½Ã½ºÅÛ µð·ºÅ丮 |
´õ Ç®¾î¼ ¼³¸íÇϸé 64ºñÆ® ÇÁ·Î¼¼½ºÀÇ °æ¿ì ÆÄÀÏ I/O ÇÔ¼ö¸¦ ÀÌ¿ëÇØ %systemroot%\System32 µð·ºÅ丮¸¦ Á¢±ÙÇÏ°Ô µÉ °æ¿ì C:\WINDOWS\system32 µð·ºÅ丮¿¡ Á¢±ÙÇÏ°Ô µÇ°ÚÁö¸¸, 32ºñÆ® ÇÁ·Î¼¼½º°¡ ÆÄÀÏ I/O ÇÔ¼ö¸¦ ÅëÇØ %systemroot%\System32 µð·ºÅ丮¸¦ Á¢±ÙÇÏ°Ô µÉ °æ¿ì WOW64´Â ÀÚµ¿À¸·Î C:\WINDOWS\SysWOW64 µð·ºÅ丮·Î Á¢±Ù°æ·Î¸¦ º¯°æÇÑ´Ù. ±×·¯³ª ´ÙÀ½ µð·ºÅ丮µé°ú ±× ÇÏÀ§ µð·ºÅ丮µéÀº Á¢±Ù°æ·Î º¯°æ¿¡¼ Á¦¿ÜµÈ´Ù.
¡ß %windir%\System32\Drivers\Etc
¡ß %windir%\System32\spool
¡ß %windir%\System32\catroot2
ÆÄÀϽýºÅÛÀÇ Á¢±Ù°æ·Î º¯°æÀº GetSystemDirectiry()¸¦ »ç¿ëÇØ º¸¸é ºÐ¸íÇÏ°Ô ³ªÅ¸³ª´Âµ¥, 32ºñÆ® ÇÁ·Î¼¼½º¿¡¼ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ½Ã½ºÅÛ µð·ºÅ丮 ¹ØÀÇ SysWOW64¸¦ ¾ò¾î¿À°Ô µÇ°í 64ºñÆ® ÇÁ·Î¼¼½º´Â ½Ã½ºÅÛ µð·ºÅ丮 ¹ØÀÇ System32¸¦ ¾ò¾î¿À°Ô µÈ´Ù. ±×·¸´Ù¸é 64ºñÆ® ÇÁ·Î¼¼½º¿¡¼ 32ºñÆ® ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â ½Ã½ºÅÛ µð·ºÅ丮¸¦ ¾ò¾î¿À·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î? 64ºñÆ® À©µµ¿ì¿¡¼´Â GetSystemWow64Directory() ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ÀÌ ´äÀ» ±¸ÇÒ ¼ö ÀÖ´Ù.
¶ÇÇÑ 64ºñÆ® À©µµ¿ì¿¡¼´Â ÇÁ·Î±×·¥ ¼³Ä¡ µð·ºÅ丮ÀÎ %Program Files%¿¡ ´ëÇØ¼µµ Á¶±ÝÀº Ưº°ÇÏ°Ô °ü¸®Çϴµ¥ ½Ã½ºÅÛ µð·ºÅ丮¿Í´Â ´Þ¸® WOW64°¡ Á÷Á¢ Á¢±Ù°æ·Î º¯°æÀ» ¼öÇàÇÏÁö´Â ¾Ê´Â´Ù. ´ë½Å 32ºñÆ® ÇÁ·Î¼¼½º°¡ %Program Files% ¹®ÀÚ¿ÀÌ Æ÷ÇÔµÈ REG_EXPAND_SZ Çü½ÄÀÇ µ¥ÀÌÅ͸¦ ·¹Áö½ºÆ®¸®¿¡ ±â·ÏÇÏ·Á°í ÇÒ ¶§ WOW64´Â ÀÌ µ¥ÀÌÅ͸¦ °¡·Îä¼ %ProgramFiles(X86)%À¸·Î ¹Ù²Ù¾î ·¹Áö½ºÆ®¸®¿¡ ±â·ÏÇÏ¸ç ¸¶Âù°¡Áö·Î ·¹Áö½ºÆ®¸®¸¦ ÀÐÀ» ¶§µµ µ¥ÀÌÅ͸¦ °¡·Îä¼ %ProgramFiles(X86)%À¸·Î º¯°æÇÑ´Ù.
±×·¯¹Ç·Î ÇÁ·Î±×·¥ ¼³Ä¡ µð·ºÅ丮¸¦ ¾ò¾î¿Í¾ß ÇÑ´Ù¸é CSIDL_PROGRAM_FILES¸¦ ÀÎÀÚ·Î »ç¿ëÇØ¼ SHGetSpecialFolderPath() ÇÔ¼ö·Î %Program Files%ÀÇ °æ·Î¸¦ ¾ò¾î¿À±â¸¦ ±ÇÀåÇÑ´Ù.
ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇϸé 32ºñÆ® ÇÁ·Î¼¼½º¿¡¼´Â C:\Program Files(X86)¸¦ ¾ò¾î¿Ã °ÍÀ̰í 64ºñÆ® ÇÁ·Î¼¼½º¿¡¼´Â C:\Program Files¸¦ ¾ò¾î¿Ã °ÍÀÌ´Ù. ÀÌ¿Í °°ÀÌ 64ºñÆ® À©µµ¿ì¿¡¼ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ °æ¿ì Á¢±Ù°æ·Î º¯°æÀÌ µÇ´Â µð·ºÅ丮µéÀº ¼Ò½º »ó¿¡ ÇϵåÄÚµùÇÏÁö ¸»°í, ¹Ýµå½Ã ÁöÁ¤ÇÑ Á¾·ùÀÇ µð·ºÅ丮¸¦ ¾ò¾î¿À´Â ÇÔ¼öµéÀ» ÀÌ¿ëÇØ¼ ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ¾ß ÇÑ´Ù.
ÀÌ ¹Û¿¡µµ 64ºñÆ® À©µµ¿ì¿¡¼´Â À©µµ¿ì¼¼¼Ç¸Þ´ÏÀú(smss.exe)°¡ °ü¸®ÇÏ´Â KnwonDLL ¸®½ºÆ®¸¦ 32ºñÆ®¿Í 64ºñÆ® µÎÁ¾·ù·Î °ü¸®Çϰí, 32ºñÆ® ÇÁ·Î¼¼½º°¡ KnownDLLs¿¡ Á¢±ÙÇÒ °æ¿ì WOW64´Â KnownsDLLs32·Î Á¢±Ù°æ·Î º¯°æÀ» ¼öÇàÇØ ÁØ´Ù. KnwonDLLs ¸®½ºÆ®´Â ·¹Áö½ºÆ®¸®ÀÇ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Session Manager ¹Ø¿¡¼ È®ÀÎÇÒ ¼ö ÀÖ´Ù. <Ç¥ 5>´Â 64ºñÆ® À©µµ¿ì¿¡¼ ÆÄÀϽýºÅÛ¿¡ Á¢±ÙÇÒ ¶§ À¯¿ëÇÏ°Ô »ç¿ëµÇ´Â ÇÔ¼ö ¸®½ºÆ®ÀÌ´Ù.
 |
| <Ç¥5> 64ºñÆ® À©µµ¿ì ÆÄÀϽýºÅÛ¿¡ °ü·ÃµÈ À¯¿ëÇÑ ÇÔ¼ö |
½ÇÁ¦ 64ºñÆ® À©µµ¿ì¿¡¼ µ¿ÀÛÇÏ´Â 32ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥À» °³¹ßÇÏ´Ù º¸¸é ¾Õ¼ ¼³¸íÇÑ 64ºñÆ® À©µµ¿ì¿¡¼ Á¦°øÇÏ´Â ÆÄÀϽýºÅÛ Á¢±Ù°æ·Î º¯°æ ¹æ½ÄÀÌ ¹®Á¦°¡ µÉ °æ¿ì°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î ÇÊÀÚ°¡ °³¹ßÇÏ´Â ¾ÈƼ¹ÙÀÌ·¯½º ÇÁ·Î±×·¥ÀÇ °æ¿ì ¾Ç¼ºÄڵ尡 ½Ã½ºÅÛ µð·ºÅ丮¿¡ °¨¿°µÇ¾î Ä¡·á¸¦ ½ÃµµÇϴµ¥ ¿øÇÏ´Â °æ·Î°¡ ¾Æ´Ñ Á¢±Ù°æ·Î º¯°æÀÌ µÈ SysWOW64 ¹ØÀ» Á¢±ÙÇÏ°Ô µÈ´Ù¸é ¿øÇÏ´Â ÆÄÀÏ¿¡ Á¢±ÙÀ» ÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ¹®Á¦°¡ µÈ´Ù.
Áï, ÀüüÀûÀÎ ÆÄÀϽýºÅÛÀ» Á¢±Ù°æ·Î º¯°æÀÌ µÇÁö ¾Ê´Â ÀϹÝÀûÀÎ »óÅ·ΠÁ¢±ÙÇÏ°í ½ÍÀ» ¶§´Â Wow64EnableWow64FsRedirection() ÇÔ¼ö¸¦ »ç¿ëÇØ¼ ÆÄÀϽýºÅÛ Á¢±Ù°æ·Î º¯°æÀ» ²ô¸é µÈ´Ù. <¸®½ºÆ® 1>À» ÂüÁ¶Çϸé, 32ºñÆ® ÇÁ·Î¼¼½º¿¡¼ ÆÄÀϽýºÅÛ Á¢±Ù°æ·Î º¯°æÀ» ²ô°í notepad.exe¸¦ Á¢±ÙÇϸé 32ºñÆ® ½Ã½ºÅÛ µð·ºÅ丮¿¡ ÀÖ´Â notepad.exe°¡ ¾Æ´Ñ 64ºñÆ® ½Ã½ºÅÛ µð·ºÅ丮¿¡ ÀÖ´Â notepad.exe¸¦ Á¢±ÙÇÏ°Ô µÈ´Ù.
| <¸®½ºÆ® 1> ÆÄÀϽýºÅÛ Á¢±Ù°æ·Î º¯°æ | | | |
// WOW64 ÆÄÀϽýºÅÛ Á¢±Ù°æ·Î º¯°æÀ» ²ö´Ù.
BOOL bRet = Wow64EnableWow64FsRedirection(FALSE);
if (bRet == TRUE)
{
// 64ºñÆ® notepad.exe ÆÄÀÏÇÚµéÀ» ¿ÀÇÂÇÑ´Ù.
CreateFile("c:\\windows\\system32\\notepad.exe",
GENERIC_EXECUTE, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// WOW64 ÆÄÀϽýºÅÛ Á¢±Ù°æ·Î º¯°æÀ» ÄÒ´Ù.
Wow64EnableWow64FsRedirection(TRUE);
} | |
 |
±×·¯³ª Á¢±Ù°æ·Î º¯°æÀ» ²ö »óÅ¿¡¼ 32ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥À» µ¿ÀÛ½Ã۱â À§Çؼ± Á¶½ÉÇØ¾ß ÇÒ °ÍÀÌ Àִµ¥ ÂüÁ¶ÇÏ°Ô µÇ´Â DLLÀÌ 32ºñÆ®°¡ ¾Æ´Ñ 64ºñÆ® DLLÀ» »ç¿ëÇÏ°Ô µÉ ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÌ °æ¿ì 64ºñÆ® DLLÀÌ 32ºñÆ® ÇÁ·Î¼¼½º¿¡ ·Îµå°¡ µÇÁöµµ ¾ÊÀ» »Ó´õ·¯ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±¸µ¿¿¡ ½É°¢ÇÑ ¹®Á¦¸¦ ¹ß»ý½Ãų ¼öµµ ÀÖ´Ù.
¿¹¸¦ µé¾î psapi.dllÀ̳ª advapi32.dll °°Àº ½Ã½ºÅÛ DLLÀÇ °æ¿ì °°Àº À̸§À¸·Î 32ºñÆ®¿Í 64ºñÆ®°¡ °¢°¢ÀÇ ½Ã½ºÅÛ µð·ºÅ丮¿¡ º°µµ·Î Á¸ÀçÇϱ⠶§¹®¿¡ À߸ø ÂüÁ¶ÇÏ°Ô µÉ ¼öµµ ÀÖ´Ù. ±×·¯¹Ç·Î ÇÊ¿äÇÑ ºÎºÐ¿¡¼¸¸ Á¢±Ù°æ·Î º¯°æÀ» ²ô°í ´Ù½Ã ÄÑÁÖ´Â ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÑ´Ù.
WOW64·ÎÀÇ ¿©Çà CWowUtil
°³¹ßÀÚ¶ó¸é ´©±¸³ª °£´ÜÇÏ°í ½±°Ô ÇÁ·Î±×·¡¹ÖÇϱ⸦ ¿øÇÑ´Ù. ¾î¶² »ç¶÷µéÀº °ÔÀ¸¸¥ »ç¶÷µéÀÌ °³¹ßÀ» °¡Àå ÀßÇÑ´Ù°íµµ Çϴµ¥, Èûµé°í ±ÍÂúÀ» ÀÏÀ» È¿À²ÀûÀ¸·Î ¸¸µé°í ÀÚµ¿ÈÇÏ·Á´Â ³ë·ÂÀ» °¡Àå ¸¹ÀÌ Çϱ⠶§¹®À̶ó°í ÇÑ´Ù. ¸¶Âù°¡Áö·Î ÇÊÀÚµµ ±×·± ¼ºÇâÀÌ ´ÙºÐÇÏ´Ù°í ÇÒ ¼ö Àִµ¥ ±×·¡¼ 64ºñÆ® À©µµ¿ì¿¡¼ 32ºñÆ® ȣȯ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§ »ç¿ëµÉ¸¸ÇÑ ¸î °¡Áö ÇÔ¼ö¸¦ ¸ð¾Æ ´ÙÀ½°ú °°Àº CWowUItil Ŭ·¡½º¸¦ ¸¸µé¾î º¸¾Ò´Ù.
ÀÌ Å¬·¡½º´Â ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â ½Ã½ºÅÛ DLLÀ» µ¿ÀûÀ¸·Î ·ÎµùÇØ¼ ½Ã½ºÅÛ ÇÔ¼öµéÀ» »ç¿ëÇϱ⠶§¹®¿¡ 64ºñÆ® À©µµ¿ì°¡ ¾Æ´Ï¾îµµ ¿¹¿Ü(Exception)°¡ ¹ß»ýÇÏÁö´Â ¾Ê´Â´Ù. »çÁ·ÀÌÁö¸¸ ÀÌ·± Ŭ·¡½º°¡ ÇÊ¿äÇÑ ÀÌÀ¯´Â À©µµ¿ì95ºÎÅÍ À©µµ¿ìXP ¹× À©µµ¿ì2003±îÁö ±¤¹üÀ§ÇÑ ¿î¿µÃ¼Á¦¿¡¼ µ¿ÀÛÇÏ´Â ÇÁ·Î±×·¥À» ÇϳªÀÇ ¼Ò½º·Î ÀÛ¼ºÇÒ ¶§ Æí¸®Çϱ⠶§¹®ÀÌ´Ù.
½ÇÁ¦·Î ¸¹Àº ÆÐŰÁö ¼ÒÇÁÆ®¿þ¾î°¡ ½Ã½ºÅÛ ÇÔ¼öµéÀ» »ç¿ëÇÒ °æ¿ì¿¡ ÀÌ¿Í À¯»çÇÑ Å¬·¡½ºµéÀ» ÀÛ¼ºÇØ »ç¿ëÇÑ´Ù. <¸®½ºÆ® 2>´Â Ŭ·¡½ºÀÇ Çì´õÀ̸ç Àüü ¼Ò½º´Â ÀÌ´ÞÀÇ µð½ºÄÏÀ» ÂüÁ¶Çϱ⠹ٶõ´Ù.
| |
#include
// Type Definition of WOW64 Util API Function Pointer
typedef VOID (WINAPI *LPFN_GetNativeSystemInfo)
( LPSYSTEM_INFO lpSystemInfo );
typedef BOOL (WINAPI *LPFN_IsWow64Process)
( HANDLE hProcess, PBOOL Wow64Process );
typedef BOOLEAN (WINAPI *LPFN_Wow64EnableWow64FsRedirection)
( BOOLEAN Wow64FsEnableRedirection );
typedef UINT (WINAPI *LPFN_GetSystemWow64Directory)
( LPTSTR lpBuffer, UINT uSize );
typedef BOOL (WINAPI *LPFN_IsWow64Message) ( void );
class CWow64Util
{
public:
CWow64Util();
virtual ~CWow64Util();
// Is..
BOOL IsWow64Process();
BOOL IsWow64Process( HANDLE hProcess );
BOOL IsWow64Message();
BOOL IsProcessorIA64();
BOOL IsProcessorAMD64();
// File System Redirection On/Off
BOOL TurnOnWow64FSRedirection();
BOOL TurnOffWow64FSRedirection();
// Get Information
UINT GetWow64SystemDirectory( LPTSTR lpBuffer, UINT uSize );
VOID GetWow64SystemInfo( LPSYSTEM_INFO lpSystemInfo );
private:
HMODULE m_hKernel32;
HMODULE m_hUser32;
LPFN_GetNativeSystemInfo m_pfnGetNativeSystemInfo;
LPFN_IsWow64Process m_pfnIsWow64Process;
LPFN_Wow64EnableWow64FsRedirection
m_pfnWow64EnableWow64FsRedirection;
LPFN_GetSystemWow64Directory
m_pfnGetSystemWow64Directory;
LPFN_IsWow64Message m_pfnIsWow64Message;
}; | |
 |
»óºÎ»óÁ¶ÇØ¾ß ÇÏ´Â 32ºñÆ®¿Í 64ºñÆ®
¾Õ¼ ¾ð±ÞÇßµíÀÌ 64ºñÆ® À©µµ¿ì¿¡´Â µÎ °¡Áö Á¾·ùÀÇ ÇÁ·Î¼¼½º°¡ µ¿ÀÛÇÒ ¼ö ÀÖ´Ù. Çϳª´Â 32ºñÆ® ÇÁ·Î¼¼½ºÀÌ°í ´Ù¸¥ Çϳª´Â 64ºñÆ® ÇÁ·Î¼¼½ºÀÌ´Ù. 64ºñÆ® À©µµ¿ì¿¡¼´Â WOW64¸¦ ÅëÇØ 32ºñÆ® ÇÁ·Î¼¼½º°¡ º°´Ù¸¥ ¾î·Á¿ò ¾øÀÌ µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇÑ´Ù. ÇÏÁö¸¸ 32ºñÆ® ÇÁ·Î¼¼½º°¡ 64ºñÆ® DLLÀ» »ç¿ëÇϰųª 64ºñÆ® ÇÁ·Î¼¼½º°¡ 32ºñÆ® DLLÀ» »ç¿ëÇÏ´Â °ÍÀº ¸î °¡Áö ÀÌÀ¯ ¶§¹®¿¡ Çã¿ëµÇÁö´Â ¾Ê´Â´Ù. ÀÚ¼¼È÷ ¾ð±ÞÇϰÚÁö¸¸ 64ºñÆ® À©µµ¿ìÀÇ ¿øÄ¢Àº <±×¸² 3>°ú °°ÀÌ ÇϳªÀÇ ÇÁ·Î¼¼½º ÁÖ¼Ò °ø°£ ¾È¿¡ 64ºñÆ®¿Í 32ºñÆ® Äڵ尡 °øÁ¸ÇÏ´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê´Â´Ù.
 |
| <±×¸² 3> 64ºñÆ® À©µµ¿ìÀÇ ¿øÄ¢ |
±×·¸´Ù¸é ¿Ö ÇϳªÀÇ ÇÁ·Î¼¼½º ÁÖ¼Ò °ø°£ ¾È¿¡ 32ºñÆ®¿Í 64ºñÆ® Äڵ尡 °øÁ¸ÇÏ´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê¾ÒÀ»±î? Å©°Ô ¼¼°¡Áö ÀÌÀ¯°¡ Àִµ¥ ù°´Â 32ºñÆ® DLLÀº 2G¸¦ ³Ñ´Â ÁÖ¼Ò°ø°£À» ó¸®ÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ¿¹¸¦ µé¾î 64ºñÆ® ÇÁ·Î¼¼½º¿¡ 32ºñÆ® DLLÀÌ ·ÎµåµÇ°í ÀÌ DLL·Î 64ºñÆ® Æ÷ÀÎÅͰ¡ ³Ñ¾î °£´Ù¸é 32ºñÆ® DLLÀº ½É°¢ÇÑ ¿¹¿Ü(Exception)°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù.
µÑ°´Â 32ºñÆ® DLLÀº 4K ÆäÀÌÁö¸¦ »ç¿ëÇϰí x86 ½ºÅ¸ÀÏÀÇ ¿¹¿Üó¸®(Exception Handling)¸¦ ¼öÇàÇÏÁö¸¸ IA64 °è¿Àº 8K ÆäÀÌÁö¸¦ »ç¿ëÇÏ°í ¿¹¿Üó¸® ¹æ½Äµµ ´Ù¸£±â ¶§¹®ÀÌ´Ù. ¼Â°·Î Kernel32.dll, User32.dll, Gdi32.dll °°Àº ½Ã½ºÅÛ DLLµéÀº ÇϳªÀÇ ÇÁ·Î¼¼½º¿¡ 32ºñÆ® ¶Ç´Â 64ºñÆ® ÁßÀÇ ´Ü ÇÑ Á¾·ù¸¸ ·ÎµåµÇ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù.
¿¹¸¦ µé¾î ÇÁ·Î¼¼½º°¡ »ý¼ºµÇ¸é¼ PEB(Process Environment Block)¿¡ User32.dllÀÌ Á¦°øÇÏ´Â ÇÔ¼ö Æ÷ÀÎÅÍ ¹è¿ÀÌ ÀúÀåµÇ°í Ä¿³Î¸ðµå À©µµ¿ì ¼ºê½Ã½ºÅÛÀÎ Win32k.sys°¡ »ç¿ëÀÚ¸ðµå APC¸¦ ÅëÇØ ÇÔ¼ö Æ÷ÀÎÅÍ ¹è¿¿¡ ÀúÀåµÇ¾î ÀÖ´Â User32.dll ÇÔ¼öµéÀ» »ç¿ëÇÏ´Â »óȲÀ» »ý°¢ÇØ º¸ÀÚ. ¸¸ÀÏ 64ºñÆ® ¹öÀüÀÇ User32.dll°ú 32ºñÆ® ¹öÀüÀÇ Use32.dllÀ» ÇϳªÀÇ ÇÁ·Î¼¼½º ¾È¿¡¼ µ¿½Ã¿¡ ·ÎµåÇØ ³õ°í ÀÖ´Ù¸é ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÒÁö °áÁ¤ÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù.
´ë½Å IPC(Inter Process Communication)³ª RPC´Â ¸ðµÎ 32ºñÆ®/64ºñÆ®¿¡ »ó°ü¾øÀÌ µ¿ÀÛÇÏ¸ç ¹ÂÅØ½º, ¼¼¸¶Æ÷, ÆÄÀÏÇÚµé, À̺¥Æ® µîÀÇ À̸§À» °¡Áø Ä¿³Î °´Ã¼ ¹× À©µµ¿ì ÇÚµé(HWND)Àº µÎ Á¾·ùÀÇ ÇÁ·Î¼¼½º¿¡¼ °øÀ¯ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
COMÀÇ °æ¿ì¿¡´Â DLL°ú °°Àº ÇüÅÂÀÇ In-Process COMÀº 32ºñÆ®¿Í 64ºñÆ® ÇÁ·Î¼¼½º³¢¸® °øÀ¯ÇÒ ¼ö ¾øÁö¸¸ ½ÇÇàÆÄÀÏ ÇüÅÂÀÎ Out-Of-Process COMÀÇ °æ¿ì¿¡´Â 32ºñÆ®¿Í 64ºñÆ® ÇÁ·Î¼¼½º°¡ ¸ðµÎ »ç¿ë°¡´ÉÇÏ´Ù. ¾×ƼºêXÀÇ °æ¿ì´Â DLLÇü½ÄÀº °°Àº Á¾·ùÀÇ ÀÎÅÍ³Ý ÀͽºÇ÷η¯¿¡¼¸¸ »ç¿ë°¡´ÉÇÏÁö¸¸ ½ÇÇàÆÄÀÏ Çü½ÄÀº ´Ù¸¥ Á¾·ù °£¿¡µµ »ç¿ë°¡´ÉÇÏ´Ù.
Âü°í·Î 64ºñÆ® À©µµ¿ì¿¡´Â 32ºñÆ® ÀÎÅÍ³Ý ÀͽºÇ÷η¯¿Í 64ºñÆ® ÀÎÅÍ³Ý ÀͽºÇ÷η¯°¡ ¸ðµÎ ¼³Ä¡µÇ¾î ÀÖ°í ±âº» À¥ ºê¶ó¿ìÀú´Â 64ºñÆ® ÀÎÅÍ³Ý ÀͽºÇ÷η¯ÀÌ´Ù. °øÀ¯ ¸Þ¸ð¸®µµ 32ºñÆ®¿Í 64ºñÆ® ÇÁ·Î¼¼½º °£¿¡ °øÀ¯ °¡´ÉÇѵ¥, ÁÖÀÇÇÒ Á¡Àº °øÀ¯ ¸Þ¸ð¸® ¾ÈÀÇ µ¥ÀÌÅÍ Áß¿¡ Æ÷ÀÎÅͰ¡ ÀÖ´Ù¸é 32ºñÆ® ÇÁ·Î¼¼½º¿Í 64ºñÆ® ÇÁ·Î¼¼½º Æ÷ÀÎÅÍ »çÀÌÁî°¡ ´Ù¸£±â ¶§¹®¿¡ ÁÖÀÇÇØ¾ß ÇÑ´Ù.
ÀÌ ¹Û¿¡µµ CreateProcess(), ShellExecute()¿Í °°Àº ÇÔ¼ö´Â 32ºñÆ®¿Í 64ºñÆ® ÇÁ·Î¼¼½º¿¡¼ ¸ðµÎ »ç¿ëÇÏ°í ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ÀϹÝÀûÀ¸·Î µð¹ö°Å¸¦ ±¸ÇöÇÏ´Â µ¥ »ç¿ëµÇ´Â ÇÔ¼öÀÎ CreateRemoteThread() ÇÔ¼ö´Â 64ºñÆ® ÇÁ·Î¼¼½º¿¡¼ 32ºñÆ® ÇÁ·Î¼¼½º¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¾ðÁ¨°£ °¡¾ßÇÏ´Â ±æ, 64ºñÆ® ÄÄÇ»ÆÃ
ÇöÀç±îÁö´Â °í¼º´É ÄÄÇ»ÆÃÀ̳ª ¿£ÅÍÇÁ¶óÀÌÁî ȯ°æÀ» Á¦¿ÜÇÑ´Ù¸é 64ºñÆ® ÄÄÇ»ÆÃÀÌ °³ÀÎ »ç¿ëÀÚ¿¡°Ô ÁÙ ¼ö ÀÖ´Â °ÍÀÌ ¹«¾ùÀÎÁö ¿Í ´êÁö ¾Ê´Â °Ô Çö½ÇÀÌ´Ù. ÇÊÀÚÀÇ »ý°¢¿¡´Â ¸ðµç ÁöÇüµ¥ÀÌÅ͸¦ ¸Þ¸ð¸®¿¡ ¸ÊÇνÃÄѳõ°í °ÔÀÓÀ» Áñ±æ ¼ö ÀÖ´Â WOW(World Of Warcraft. °ø±³·Ó°Ôµµ Windows On Windows¿Í ¾àÀÚ°¡ °°´Ù)ÀÇ 64ºñÆ® ¹öÀüÀÌ ³ª¿Â´Ù¸é Áß°£ Áß°£ ÁöÇüÀ» ÀдÀ¶ó ¶Ò¶Ò ²÷±â´Â È¸é ¾øÀÌ ¿ÍÀ̹øÀ» Ÿ°í ¸ÚÁø °æÄ¡¸¦ Áñ±æ ¼ö ÀÖÁö ¾ÊÀ»±î ¶ó°í »ó»óÇÏ´Â °Í ¿Ü¿¡´Â ¾ÆÁ÷Àº º°´Ù¸¥ »ç¿ëó¸¦ ãÁö ¸øÇß´Ù.
ÇÊÀÚ¿Í ºñ½ÁÇÑ »ý°¢À» ¾ÆÁ÷Àº ¸¹Àº »ç¶÷µéÀÌ Çϰí ÀÖ°í ¼ö¸¹Àº »ç¿ëÀÚ¸¦ °®°í ÀÖ´Â ´ëºÎºÐÀÇ ÇÁ·Î±×·¥µéÁ¶Â÷ 64ºñÆ® ¹öÀü ¹ßÇ¥ °èȹÀ» °®°í ÀÖÁö ¾Ê´Ù. ¾ÆÁ÷Àº 32ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥À¸·Îµµ ÃæºÐÈ÷ ¸¸Á·À» ´À³¢±â ¶§¹®ÀÌ´Ù.
±×·¯³ª ±×·¸´Ù°í ÇØ¼ 64ºñÆ® ÄÄÇ»ÆÃÀ¸·Î °¡¾ß ÇÏÁö ¾Ê¾Æ¾ß µÈ´Ù´Â °ÍÀº ¾Æ´Ï´Ù. ¼¼»óÀº º¹ÀâÇØÁö°í ÀÖ°í °í°´ÀÇ Àý½ÇÇÑ ¿ä±¸ÀÌ°Ç ±â¾÷ÀÇ ÀÌÀ±Ãß±¸¸¦ À§ÇÑ ÇãdzÀÌ°Ç °£¿¡ ¾ðÁ¨°£ °¡¾ß ÇÏ´Â ±æÀÌ 64ºñÆ® ÄÄÇ»ÆÃÀÌ´Ù.
±×·¯¹Ç·Î Á» ´õ ³ÐÀº ½Ã¾ß¸¦ °¡Áø °³¹ßÀÚ¶ó¸é ÇöÀç 16ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ëÇÑ Áö¿øÀÌ Á¾·áµÇ¾úµíÀÌ À©µµ¿ìÀÇ 32ºñÆ® ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¾öÈ£´Â ¾ðÁ¨°¡ »ç¶óÁú °ÍÀ» ¿¹ÃøÇϰí 64ºñÆ® ÄÄÇ»ÆÃÀ» ´ëºñÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ±Û¿¡¼´Â 64ºñÆ® À©µµ¿ì¿¡¼ ´Þ¶óÁø Á¡µéÀ» °³¹ßÀÚÀÇ °üÁ¡¿¡¼ »ìÆìº¸µµ·Ï ÇϰڴÙ.@
* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ Á¦ÈÞ¸ÅüÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.