À©µµ¿ì¿¡¼­ÀÇ ½ºÅà ±â¹Ý ¿À¹öÇ÷οì Part1 - ±âº» °³³ä ÀúÀÚ: 31st May, 2005 Nish Bhalla. ¹ø¿ª: 2011/6/5. dakuo. (dakuo@naver.com) Ãâó: http://www.SecurityCompass.com ¼Ò°³ ÀÌ ½Ã¸®Áî´Â À©µµ¿ì¿¡¼­ÀÇ ½ºÅà ±â¹Ý ¿À¹öÇ÷ο쿡 ´ëÇØ ÀÛ¼ºÇÏ¿´½À´Ï´Ù. ÀͽºÇ÷ÎÀÕÀ» ÀÛ¼ºÇϱâ Àü¿¡ ¸î °¡Áö °³³äÀ» Á¤¸®ÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. ù ¹ø° ÆÄÆ®¿¡¼­´Â ¸Þ¸ð¸®¿¡ ¾î¶»°Ô ½ÇÇà °¡´ÉÇÏ°Ô ·Îµå µÇ°í ½ÇÇàµÇ´ÂÁö¿¡ ´ëÇÑ ±âº» °³³äÀ» ¼³¸íÇϴµ¥ ÁßÁ¡À» µÑ °ÍÀÔ´Ï´Ù. µÎ ¹ø° ÆÄÆ®¿¡¼­´Â ±âº» ¾î¼Àºí¸® ¸í·É¾î¿¡ ÁßÁ¡À» µÑ °ÍÀÔ´Ï´Ù. ¼¼ ¹ø° ÆÄÆ®¿¡¼­´Â ½ºÅà ¿À¹öÇ÷ο찡 ¹«¾ùÀÎÁö, ¿Ö Á¸ÀçÇÏ´ÂÁö, Ãë¾àÇÑ ¾îÇø®ÄÉÀ̼ÇÀ» À§ÇÑ ·ÎÄà ÀͽºÇ÷ÎÀÕÀº ¾î¶»°Ô ÀÛ¼ºÇÏ´ÂÁö¿¡ ´ëÇØ Å½±¸ÇÕ´Ï´Ù. ¸¶Áö¸· ³× ¹ø° ÆÄÆ®¿¡¼­´Â ½©ÄÚµå ÀÛ¼º°ú ¸®¸ðÆ® ¹öÆÛ ¿À¹öÇ÷οì ÀͽºÇ÷ÎÀÕÀÇ ÀÔ¹®¼­¸¦ º¸¿©ÁÝ´Ï´Ù. °³³äÀ» ¹è¿ì´Âµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿¹Á¦¸¦ ÀÚ¼¼ÇÏ°Ô Á¦°øÇÕ´Ï´Ù. ¿¹Á¦´Â Windows XP (No SP) ±â¹ÝÀ¸·Î ÀÛ¼ºÇÏ¿´°í Visual Studio 6.0°ú Visual Studio 7.0¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. ¶ÇÇÑ ¿¹Á¦ Áß ÀϺδ Visual Studio .NET (or VS 7.0)¿¡¼­ ½Ã¿¬Çß½À´Ï´Ù. ÀÌ·¯ÇÑ ¿¹Á¦´Â Microsoft¿¡¼­ ±¸ÇöÇÑ »õ·Î¿î º¸¾È ±â´ÉµéÀ» È­¸é¿¡ Ç¥½ÃÇÕ´Ï´Ù. Visual Studio .NET °³¹ßȯ°æÀº ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ°í, ¸î °¡Áö ±âº» Á¦°ø º¸¾È Á¶Ä¡°¡ ¿©±â¿¡ º¸ÀÌ´Â °ø°ÝÀÇ ÀϺθ¦ ¹æÁöÇÕ´Ï´Ù. ÀÌ ½Ã¸®ÁîÀÇ ¿¹Á¦´Â ÄÄÆÄÀÏ ÇÏ´Â µ¿¾È "/GS" Ç÷¡±× ¿É¼ÇÀ» ÇØÁ¦ÇØ¾ß ÀͽºÇ÷ÎÀÕÀÌ ÀÛµ¿ÇÏ°í, ¾îÇø®ÄÉÀ̼ÇÀÌ Ãë¾àÇÕ´Ï´Ù. ¹®¼­´Â ´Ù¾çÇÑ Åø°ú À¯Æ¿¸®Æ¼ÀÇ »ç¿ëÀ» ¼Ò°³ÇÏ°í ¶ÇÇÑ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Â °÷ÀÇ ¸µÅ©¸¦ Á¦°øÇÕ´Ï´Ù. ¿¹Á¦´Â »çÀÌÆ®¿¡¼­µµ ´Ù¿î¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ¹®¼­¸¦ Àбâ Àü¿¡ ÇÒ ¼ö ÀÖ´Â Áú¹® ÁßÀÇ Çϳª´Â ¿Ö ´Ù¸¥ ¹®¼­¿¡¼­ ÀͽºÇ÷ÎÀÕÀ» ÀÛ¼ºÇϳª? ÀÔ´Ï´Ù. Àú´Â ÀͽºÇ÷ÎÀÕ ÀÛ¼º¹ýÀ» ¹è¿ì±â Àü¿¡ ÀͽºÇ÷ÎÀÕ ÀÛ¼º¿¡ ´ëÇÑ ¸î °¡Áö ¿ì¼öÇÑ ¹®¼­¸¦ ÀÐÀ¸·Á°í ÇßÁö¸¸, ±× ¹®¼­µéÀº Ç×»ó »çÀü¿¡ ÇÊ¿äÇÑ Áö½ÄÀ» ¾Ë°í ÀÖ´Ù°í ¸î °¡Áö °¡Á¤À» Çß½À´Ï´Ù. ÀÌ ½Ã¸®Áî¿¡¼­´Â ±×°ÍÀ» º¸¿ÏÇÏ·Á°í ÇÕ´Ï´Ù. µÎ ¹ø°·Î ¹®¼­µéÀÇ ´ëºÎºÐÀº ¿¹Á¦¸¦ º¸¿©ÁÖ±â À§ÇÑ »ùÇà ¾îÇø®ÄÉÀ̼ÇÀ» »ç¿ëÇϴµ¥; ¿¹Á¦¿Í ±× ¿¹Á¦¸¦ º¸¿©ÁÖ±â À§ÇØ ¼±ÅÃÇÑ ¾îÇø®ÄÉÀ̼ǵéÀº ÀÏÁ¤ ±â°£ÀÌ Áö³ª ¹«¿ëÁö¹°À̰ųª ´õ ÀÌ»ó ´Ù¿î·Îµå ÇÒ ¼ö ¾ø¾ú½À´Ï´Ù. Àú´Â ÀÚÁÖ ¾îÇø®ÄÉÀ̼ÇÀÇ Á¤È®ÇÑ ¹öÀüÀ» °Ë»öÇÏ´Â µ¥¿¡ ½Ã°£À» º¸³¾ °ÍÀÔ´Ï´Ù. ¸¹Àº °³¹ßÀÚµéÀº "GS" Ç÷¡±×ÀÇ »ç¿ëÀÌ ¸ðµç ¹öÆÛ ¿À¹öÇ÷οì ÀͽºÇ÷ÎÀÕ¿¡ ´ëÇÑ °ø°ÝµéÀ» ¹æÁöÇÑ´Ù°í ¿ÀÇØÇÏ°í ÀÖ½À´Ï´Ù. ¸ðµç À¯ÇüÀÇ ½ºÅà ±â¹Ý °ø°ÝÀ» ¸·À» ¼ö ¾ø´Ù°í Microsoftµµ Á÷Á¢ ¸»Çß½À´Ï´Ù. (http://msdn.microsoft.com/library/en-us/dv_vstechart/html/vctchCompilerSecurityChecksInDepth.asp) °Ô´Ù°¡, ÀÌ ±â´ÉÀÌ ±¸ÇöµÇ¾î ÀÖÁö ¾ÊÀº ¸¹Àº ´Ù¸¥ °³¹ß ȯ°æÀÌ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °³¹ß ȯ°æ¿¡¼­ °³¹ßµÈ ¾îÇø®ÄÉÀ̼ǵéÀº ¿©ÀüÈ÷ ÀͽºÇ÷ÎÀÕ Å×Å©´Ð¿¡ Ãë¾àÇÕ´Ï´Ù. ¸¸¾à Áú¹®ÀÌ Àְųª Á¦¾È »çÇ×ÀÌ ÀÖÀ¸¸é ÁÖÀúÇÏÁö ¸»°í ¿¬¶ô Áֽñ⠹ٶø´Ï´Ù. (articles [a-t] securitycompass.com) ¸¶Áö¸·À¸·Î, ÀÌ ¹®¼­¸¦ ºñÆòÇÏ´Â °ÍÀ» µµ¿ÍÁØ ¸ðµç »ç¶÷µé¿¡°Ô °¨»çÇÕ´Ï´Ù. ±âº»°³³ä ¸ðµç ¾îÇø®ÄÉÀ̼ÇÀº 4GBÀÇ °¡»ó ¸Þ¸ð¸® °ø°£À» ÇÒ´ç ¹Þ½À´Ï´Ù. (¹°¸®Àû ¸Þ¸ð¸®°¡ ÀÌ °¡»ó ¸Þ¸ð¸® °ø°£º¸´Ù ´õ Àû´õ¶óµµ(ex. 128MB or 256MB)) 4 GBÀÇ °ø°£Àº 32-bit ÁÖ¼Ò °ø°£À» ±â¹ÝÀ¸·Î ÇÕ´Ï´Ù. (2^32 bytes -> 4294967296 bytes.) ¸ðµç ¾îÇø®ÄÉÀ̼ÇÀº ½ÇÇàÇÒ ¶§ ¸Þ¸ð¸® °ü¸®ÀÚ°¡ ÀÚµ¿À¸·Î °¡»ó ÁÖ¼Ò¸¦ ½ÇÁ¦·Î µ¥ÀÌÅÍ°¡ Á¸ÀçÇÏ´Â ¹°¸® ÁÖ¼Ò·Î ¿¬°áÇÕ´Ï´Ù. ¸Þ¸ð¸® °ü¸®´Â ¿î¿µ üÁ¦ÀÇ Ã¥ÀÓÀ̸ç, ¾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇÑ ¸Þ¸ð¸® ÇÒ´ç°ú ÇØÁ¦¸¦ ÇÕ´Ï´Ù. (Áö±ÝÀº malloc/new µî¿¡ ´ëÇØ »ý°¢ÇÏÁö ¸¶¼¼¿ä.) 4 GBÀÇ °¡»ó ¸Þ¸ð¸® °ø°£Àº À¯Àú ¸ðµå¿Í Ä¿³Î ¸ðµå »çÀ̸¦ µ¿ÀÏÇÏ°Ô ³ª´¯´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº ÀϹÝÀûÀ¸·Î À¯Àú ¸ðµå ¸Þ¸ð¸®¿¡¼­ ·Îµå/½ÇÇàµÇ¸ç, Ä¿³Î ¸ðµå ÄÄÆ÷³ÍÆ®´Â Ä¿³Î ¸ðµå ¸Þ¸ð¸®¿¡¼­ ·Îµå/½ÇÇàµË´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº Ä¿³Î ¸ðµå ¸Þ¸ð¸®¸¦ Á÷Á¢ÀûÀ¸·Î Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù; ±×·± ½Ãµµ´Â Á¢±Ù À§¹ÝÀÌ ¹ß»ýÇÕ´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÌ Á¢±ÙÇØ¾ß ÇÒ ¶§ Ä¿³ÎÀ» È£ÃâÇÏ·Á¸é, À¯Àú ¸ðµå¿¡¼­ Ä¿³Î ¸ðµå·ÎÀÇ ÀüȯÀÌ ÀÌ·ç¾îÁý´Ï´Ù. À¯Àú ¸ðµåÀÇ ¹üÀ§´Â 0x00000000 - 0x7fffffff ÀÌ°í Ä¿³Î ¸ðµåÀÇ ¹üÀ§´Â 0x80000000 - 0xBfffffff ¿Í °°½À´Ï´Ù, ±×·¯³ª boot.ini ÆÄÀÏ¿¡ /xGB ¸¦ ÀüȯÇÏ¿© ÇÒ´çµÈ °ø°£À» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù, ¿©±â¼­ x´Â À¯Àú ¸ðµå¿¡ ´ëÇÑ ¸Þ¸ð¸®ÀÇ GBÀÇ ¼ýÀÚÀÔ´Ï´Ù. DLL°ú EXE ÆÄÀÏ µ¿Àû ¸µÅ© ¶óÀ̺귯¸®(DLL)´Â ÇÔ²² ¿¬°áµÈ ¼­ºê·çƾµéÀ» Æ÷ÇÔÇÏ´Â ÀÌÁø ÆÄÀÏÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¶óÀ̺귯¸®µéÀº(DLL' s) ÀÌÁø ½ÇÇà ÆÄÀÏ(.EXE)ÀÌ DLLµé¿¡ ³»ÀåµÈ ¼­ºê·çƾµéÀ» »ç¿ëÇØ¾ß ÇÒ ¶§ ·Îµå µË´Ï´Ù. DLLµé°ú Exe ÆÄÀÏÀº(½ÇÇà °¡´ÉÇÑ ¹ÙÀ̳ʸ®) °ÅÀÇ °°½À´Ï´Ù, µÑ ´Ù ¹ÙÀ̳ʸ®¸¦ DLL ¶Ç´Â EXE ·Î Ãë±ÞÇϱâ À§ÇØ ³ªÅ¸³»´Â ´ÜÀÏ ºñÆ®¸¦ Á¦¿ÜÇÏ°í °°Àº PE Æ÷¸ËÀ» »ç¿ëÇÕ´Ï´Ù. OCX(ActiveX)¿Í CPL(Control Panel) ÆÄÀϵ鵵 DLL°ú Á¤È®È÷ °°½À´Ï´Ù. ¶óÀ̺귯¸®¿¡´Â Á¤Àû ¶óÀ̺귯¸® ¶Ç´Â µ¿Àû ¶óÀ̺귯¸®°¡ ÀÖ½À´Ï´Ù. À©µµ¿ìÁî´Â ¸Þ¸ð¸®¿¡ Çѹø¸¸ ·Îµå µÇ°í ¿©·¯ ¾îÇø®ÄÉÀÌ¼Ç °£¿¡ °øÀ¯µÇ´Â µî ´Ù¼öÀÇ ÀåÁ¡À» °¡Áø µ¿Àû ¶óÀ̺귯¸®¸¦ ÁÖ·Î »ç¿ëÇÕ´Ï´Ù. DLLs¿¡ ¸î °¡Áö ¿¹¸¦ µé¸é kernel32.dll, user32.dll µîÀÌ ÀÖ½À´Ï´Ù. ¸Þ¸ð¸® ÇÒ´ç °¢°¢ÀÇ ½ÇÇà ÆÄÀÏÀº Áߺ¹µÇÁö ¾Ê°í °íÀ¯ÇÏ°Ô ÁÖ¼Ò °ø°£¿¡ ·Îµå µË´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÇ DLLÀÌ ·Îµå µÇ´Â ¸Þ¸ð¸® À§Ä¡´Â ¿î¿µ üÁ¦¿Í ¾îÇø®ÄÉÀ̼ÇÀÇ ¹öÀüÀÌ ±×´ë·Î À¯ÁöµÇ´Â µ¿¾ÈÀº ¿©·¯ ÄÄÇ»ÅÍ¿¡¼­ Á¤È®È÷ °°½À´Ï´Ù. Note: ÀͽºÇ÷ÎÀÕÀ» ÀÛ¼ºÇÒ ¶§, DLL°ú ÇØ´ç ÇÔ¼öÀÇ À§Ä¡¸¦ ¾Æ´Â Áö½ÄÀÌ »ç¿ëµË´Ï´Ù. ½ÇÇà °¡´ÉÇÑ ÆÄÀÏÀÌ ·Îµå µÇ´Â °÷ÀÇ ÁÖ¼Ò º£À̽º¸¦ º¼ ¼ö ÀÖ´Â ¿©·¯ ÅøµéÀÌ ÀÖ½À´Ï´Ù. Microsoft´Â Visual Studio¸¦ ¼³Ä¡ÇÏ¸é ±âº» °ªÀ¸·Î dumpbin.exe ¶ó´Â À¯Æ¿¸®Æ¼¸¦ Á¦°øÇÕ´Ï´Ù. Ollydbg(ÀͽºÇ÷ÎÀÕ ÀÛ¼ºÀ» ½ÃµµÇϰųª ´Ù¸¥ ¹ÙÀ̳ʸ®ÀÇ ºÐ¼®À» ½ÃÀÛÇÒ ¶§ °¡Àå Ä£ÇÑ Ä£±¸°¡ µÉ ¼ö ÀÖ´Â ÅøÀÔ´Ï´Ù)¿Í quickview plus °°Àº ´Ù¸¥ Åøµµ ±×·¯ÇÑ Á¤º¸¸¦ º¸´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸Þ¸ð¸® °³¿ä ¾îÇø®ÄÉÀ̼Ç/ÇÁ·Î¼¼½º´Â ¼¼ °¡Áö ÁÖ¿ä ¸Þ¸ð¸® ¿µ¿ª¿¡ ·Îµå µË´Ï´Ù, ½ºÅà ¼¼±×¸ÕÆ®, µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®, ÄÚµå/ÅؽºÆ® ¼¼±×¸ÕÆ®. ½ºÅà ¼¼±×¸ÕÆ®¿¡´Â Áö¿ª º¯¼ö¿Í ÇÁ·Î½ÃÀú È£ÃâÀÌ ÀúÀåµË´Ï´Ù, µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¿¡´Â Á¤Àû º¯¼ö¿Í µ¿Àû º¯¼ö°¡ ÀúÀåµË´Ï´Ù, ÅؽºÆ® ¼¼±×¸ÕÆ®¿¡´Â ÇÁ·Î±×·¥ ¸í·É¾î°¡ ÀúÀåµË´Ï´Ù. µ¥ÀÌÅÍ¿Í ½ºÅà ¼¼±×¸ÕÆ®´Â °¢ ¾îÇø®ÄÉÀ̼ǿ¡°Ô °³º°ÀûÀÌ°í, ¾î¶² ¾îÇø®ÄÉÀ̼ǵµ ÀÌ ¿µ¿ª¿¡ Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù. ¹Ý¸é¿¡ ÅؽºÆ® ¼¼±×¸ÕÆ®´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿¡ ÀÇÇؼ­µµ Á¢±ÙµÉ ¼ö ÀÖ´Â Àбâ Àü¿ë ¼¼±×¸ÕÆ®ÀÔ´Ï´Ù, ÇÏÁö¸¸, ¸¸¾à ÀÌ ¿µ¿ª¿¡ ¾²±â¸¦ ½ÃµµÇÏ°Ô µÇ¸é ¼¼±×¸ÕÆ® À§¹ÝÀÌ ¹ß»ýÇÕ´Ï´Ù. ¸Þ¸ð¸® ·¹À̾ƿô - ½ºÅà ½ºÅÃÀº ¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇÏ´Â ¿¹¾àµÈ °¡»ó ¸Þ¸ð¸® ¿µ¿ªÀÔ´Ï´Ù. ÀÌ°ÍÀº ¿î¿µ üÁ¦ÀÇ ¸Þ¸ð¸® ÇÒ´ç ¹æ¹ýÀÔ´Ï´Ù. °³¹ßÀÚ´Â ¸Þ¸ð¸®¸¦ Áõ°¡½ÃÅ°±â À§ÇØ Äڵ忡¼­ ´Ù¸¥ Ưº°ÇÑ ¸í·É¾î¸¦ ¾µ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù, ¿î¿µ üÁ¦°¡ º¸È£µÈ ÆäÀÌÁö¸¦ ÅëÇØ ÀÚµ¿À¸·Î ÀÌ ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ÄÚµå´Â ¹®ÀÚ ¹è¿­ "var"À» ½ºÅÿ¡ ÀúÀåÇÕ´Ï´Ù. Example: char var[] = "www.security.Compass.com"; ½ºÅÃÀº Ä«Æä¿¡¼­ÀÇ Á¢½Ã´õ¹Ì¿Í ºñ½ÁÇÏ°Ô ÀÛµ¿ÇÑ´Ù. Á¤º¸´Â Ç×»ó ½ºÅÿ¡ °¡Àå À§¿¡¼­ºÎÅÍ Çª½Ã(Ãß°¡)µÇ°í ÆË(Á¦°Å)µË´Ï´Ù. ½ºÅÃÀº ÈÄÀÔ¼±Ãâ(Last in First Out: LIFO) µ¥ÀÌÅÍ ±¸Á¶ÀÔ´Ï´Ù. ½ºÅÿ¡ µ¥ÀÌÅ͸¦ Ǫ½ÃÇÏ¸é ¾ÆÀÌÅÛÀÌ ½ºÅÿ¡ ÀúÀåµÇ±â Àü¿¡ ÇöÀç ½ºÅÃÀÇ °¡Àå ³ôÀº °÷ÀÌ 4 ¹ÙÀÌÆ® °¨¼ÒµË´Ï´Ù. ¸ðµç Á¤º¸´Â ½ºÅÿ¡ Ãß°¡µÉ ¶§, ÀÌÀüÀÇ ¸ðµç µ¥ÀÌÅÍ°¡ ¾Æ·¡ÂÊÀ¸·Î À̵¿µÇ°í »õ·Î¿î µ¥ÀÌÅÍ°¡ ½ºÅÃÀÇ °¡Àå À§¸¦ Â÷ÁöÇÕ´Ï´Ù. ´ÙÁß ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅÍ´Â ¾ðÁ¦µçÁö ½ºÅÿ¡ push µÇ°Å³ª pop µÉ ¼ö ÀÖ½À´Ï´Ù. ÇöÀç ½ºÅÃÀÇ ¸Ç À§´Â ½ºÅÃÀÇ ¸Ç À§¿¡ ¾ÆÀÌÅÛÀÌ Çª½ÃµÇ±â Àü¿¡ °¨¼ÒÇϱ⠶§¹®¿¡, ½ºÅÃÀº ¸Þ¸ð¸®¿¡¼­ ¾Æ·¡ÂÊÀ¸·Î ¼ºÀåÇÕ´Ï´Ù. ÇÁ·¹ÀÓ ·¹À̾ƿô ½ºÅà ÇÁ·¹ÀÓÀº ¼­ºê-·çƾ/ÇÁ·Î½ÃÀú·Î ÁøÀÔÇÏ´Â µ¿¾È ¸¸µé¾îÁö´Â µ¥ÀÌÅÍ ±¸Á¶ÀÔ´Ï´Ù. (C/C++, ÇÔ¼ö »ý¼º °üÁ¡¿¡¼­) ½ºÅà ÇÁ·¹ÀÓÀÇ ¸ñÀûÀº ºÎ¸ð ÇÁ·Î½ÃÀúÀÇ ¸Å°³º¯¼ö¸¦ ±×´ë·Î À¯ÁöÇÏ°í ¼­ºê-·çƾ/ÇÁ·Î½ÃÀú¿¡ Àμö¸¦ Àü´ÞÇϱâ À§Çؼ­ ÀÔ´Ï´Ù. ½ºÅà Æ÷ÀÎÅÍÀÇ ÇöÀç À§Ä¡´Â ½ºÅà Æ÷ÀÎÅÍ ·¹Áö½ºÅÍ(ESP)¿¡ Á¢±ÙÇÔÀ¸·Î½á ¾ðÁ¦µçÁö Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇöÀç ÇÔ¼öÀÇ º£À̽º´Â º£À̽º Æ÷ÀÎÅÍ ¶Ç´Â ÇÁ·¹ÀÓ Æ÷ÀÎÅͶó°í ºÒ¸®´Â EBP ·¹Áö½ºÅ͸¦ »ç¿ëÇÔÀ¸·Î½á Á¢±ÙÇÒ ¼ö ÀÖ°í, ÇöÀç ½ÇÇà À§Ä¡´Â ¸í·É¾î Æ÷ÀÎÅÍ ·¹Áö½ºÅÍ(EIP)¿¡ Á¢±ÙÇÔÀ¸·Î½á Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸Þ¸ð¸® ·¹À̾ƿô - Èü ÈüÀº ½ºÅðú °°ÀÌ ¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇÏ´Â °¡»ó ¸Þ¸ð¸® °ø°£ÀÔ´Ï´Ù. ¸ðµç ¾îÇø®ÄÉÀ̼ÇÀº ±âº» Èü °ø°£À» °¡Áö°í ÀÖ½À´Ï´Ù, ÇÏÁö¸¸ ½ºÅðú ´Þ¸®, °³º°Àû Èü °ø°£Àº C/C++ ÇÁ·Î±×·¡¸Ó°¡ "new()" ¶Ç´Â "malloc()" ¿Í °°Àº Ưº°ÇÑ ¸í·É¾î¸¦ »ç¿ëÇÔÀ¸·Î½á »ý¼ºµÇ°í "delete()" ¶Ç´Â "free()"¸¦ »ç¿ëÇÔÀ¸·Î½á ÇØÁ¦/»èÁ¦µË´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÌ »çÀü¿¡ ÇÊ¿äÇÑ °³Ã¼ÀÇ ¼öÀÇ Å©±â¸¦ ¸ð¸¦ ¶§ ¶Ç´Â °³Ã¼°¡ ³Ê¹« Ä¿¼­ ½ºÅÿ¡ µé¾î°¥ ¼ö ¾øÀ» ¶§ Èü ¿¬»êÀÌ È£ÃâµË´Ï´Ù. Example: OBJECT *var = NULL; var = malloc(sizeof(OBJECT)); À©µµ¿ìÁî Èü °ü¸®ÀÚ°¡ ¸Þ¸ð¸® °ü¸®ÀÚº¸´Ù À§¿¡¼­ ÀÛµ¿ÇÏ°í ¸Þ¸ð¸® »ó´ç ºÎºÐÀ» ÇÒ´ç ¶Ç´Â ÇØÁ¦ÇÏ´Â ±â´ÉÀ» Á¦°øÇÒ Ã¥ÀÓÀÌ ÀÖ½À´Ï´Ù. ¸¸¾à image°¡ ÇÒ´ç Å©±â¸¦ ³ªÅ¸³»Áö ¾Ê´Â´Ù¸é ¸ðµç ¾îÇø®ÄÉÀ̼ÇÀº ±âº» °ªÀ¸·Î 1MB(0x100000)ÀÇ Èü »çÀÌÁî°¡ ¿¹¾àµÇ°í 4K(0x1000)°¡ commitµË´Ï´Ù. ÈüÀº ½Ã°£ÀÌ Áö³ª¸é¼­ ¼ºÀåÇÏ°í ¸Þ¸ð¸®¿¡ ¿¬¼ÓµÉ ¼ö ¾ø½À´Ï´Ù. Èü ±¸Á¶ °¢ Èü ºí·ÏÀº »ç¿ë ÁßÀ̰ųª ÇØÁ¦ÇÑ °ÍµéÀÇ ¸Þ¸ð¸® ºí·ÏÀ» °ü¸®Çϱâ À§ÇÏ¿© µ¥ÀÌÅÍ ±¸Á¶¸¦ »ý¼ºÇÏ°í À¯ÁöÇÕ´Ï´Ù. ÈüÀÇ ÇÒ´çÀº 8 ¹ÙÀÌÆ®ÀÇ ÃÖ¼Ò Å©±â, 8 ¹ÙÀÌÆ®ÀÇ Ãß°¡ ¿À¹öÇìµå¸¦ °¡Áý´Ï´Ù. (heap control block) Èü ÄÁÆ®·Ñ ºí·ÏÀº ¹«¾ùº¸´Ùµµ ´ÙÀ½ free ºí·ÏÀÇ Æ÷ÀÎÅ͵µ Æ÷ÇÔÇÕ´Ï´Ù. ¸Þ¸ð¸®°¡ ÇØÁ¦µÇ°Å³ª ÇÒ´çµÇ´Â ´ë·Î ÀÌ Æ÷ÀÎÅÍ´Â ¼öÁ¤µË´Ï´Ù. Note: XP SP2 ¿Í Windows 2003¿¡¼­ÀÇ Èü Microsoft´Â Èü ÄÁÆ®·Ñ ºí·Ï¿¡ ÀúÀåµÇ´Â ±æÀÌ 1 byteÀÇ Ãß°¡ ·£´ý °ªÀ» µµÀÔ Çß½À´Ï´Ù. ¸¸¾à ÀÌ °ªÀÌ º¯Á¶µÇ¸é ¿À·ù°¡ »ý¼ºµË´Ï´Ù, ÇÏÁö¸¸ ±×°ÍÀº °Ü¿ì 1 ¹ÙÀÌÆ®À̱⠶§¹®¿¡ 255°³¸¸À¸·Î ÀÌ °ªÀ» ¸ÂÃâ ¼ö ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. (ÀÌ ºÎºÐ¿¡ ´ëÇØ ¹«Â÷º° ´ëÀÔÀÌ ¾²ÀÌ´Â °ÍÀÌ ¾î¿ï¸³´Ï´Ù.) Note: "/GS" Ç÷¡±×¸¦ ÀÌ¿ëÇÑ ½ºÅà º¸È£ Microsoft Visual Studio .NET¿Í ÇÔ²² »õ·Î¿î ÄÄÆÄÀÏ·¯ Ç÷¡±× Áï, "/GS" Ç÷¡±×°¡ µµÀԵǾú½À´Ï´Ù. ¼³Á¤(±âº» °ªÀ¸·Î ¼³Á¤)ÇÒ ¶§ ÀÌ°ÍÀº ½ºÅÿ¡ º¯¼ö ¼±¾ð°ú ¸®ÅÏ ÁÖ¼Ò »çÀÌ¿¡ canary °ªÀ» ¼³Á¤ÇÕ´Ï´Ù. ´ÙÀ½ ÆÄÆ®¿¡¼­ ÄÄÆÄÀÏ·¯ ¿É¼Ç ¼³Á¤À» »ç¿ëÇÏ¿© ÄÄÆÄÀÏ µÈ "Hello World" Äڵ带 °ËÅäÇÕ´Ï´Ù.