1597, 1/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   wolverine
   [ÀÚÀÛ] C °­ÁÂ [2] - Memory Allocation

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=2034 [º¹»ç]


À̹ø ÀåÀº ¸Þ¸ð¸® ¿µ¿ª¿¡ ´ëÇؼ­ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.

¸Þ¸ð¸® ¿µ¿ªÀº 1Àå¿¡¼­ ¼³¸íÇÑ linker command file¿¡ ÀÇÇؼ­ ¼³Á¤µÈ´Ù.
°³¹ßÀÚ´Â
- ÇöÀç ½ÇÇà ÆÄÀÏÀÌ ±¸µ¿µÉ systemÀÇ ¹°¸®ÀûÀÎ memory´Â ¾î¶»°Ô ±¸¼ºµÇ¾î ÀÖ´ÂÁö
- BuildµÉ ÄÚµå¿Í º¯¼ö, stack°ú heapÀº ¾î¶»°Ô ½ÇÁ¦ memory¿¡ ÇÒ´çÀ» ÇÒ °ÍÀÎÁö
¸¦ linker command file¿¡ Á¤ÇØÁø ¹®¹ý¿¡ µû¶ó¼­ Á¤ÀÇÇÏ°í,
ÀÌ°ÍÀ» linkerÀÇ ÀÔ·ÂÀ¸·Î ´øÁ® ÁÖ°Ô µÈ´Ù.

Linker´Â Àü´Þ¹ÞÀº linker command fileÀ» Çص¶ÇÏ¿©¼­,
ÇÊ¿äÇÑ address¸¦ °è»êÇÏ°í ÇÒ´çÇÑ´Ù.
ÀÌ°ÍÀ» Compile time(¶Ç´Â Build time) memory allocation À̶ó°í ÇÑ´Ù.

Dynamic memory allocationÀ» Á¦¿ÜÇÑ c code »óÀÇ ¸ðµç ÄÚµå¿Í º¯¼öµéÀÇ
address´Â ÀÌó·³ linker¿¡ ÀÇÇؼ­ build time¿¡ °áÁ¤ÀÌ µÇ¸ç,
linker command fileÀº build time memory allocationÀ» À§ÇØ
ÇÊ¿äÇÑ Á¤º¸¸¦ linker¿¡ ÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù.

Note:
malloc°ú °°Àº dynamic memory allocationÀº
run time memory allocationÀ̶ó°í ºÎ¸¥´Ù.

´ëºÎºÐÀÇ Compiler Tool Chain¿¡¼­ ´ÙÀ½°ú °°Àº default ¿µ¿ªÀÌ Á¤ÀǵǾî ÀÖÀ¸¸ç,
Ưº°ÇÑ Áö½Ã°¡ ¾ø´Â °æ¿ì c code´Â ¾Æ·¡¿Í °°Àº default ¿µ¿ª¿¡ ÇÒ´çÀÌ µÈ´Ù.
(Tool Chain¸¶´Ù À̸§Àº ¾à°£¾¿ ´Ù¸¦ ¼ö ÀÖÁö¸¸, ±âº»ÀûÀÎ °³³äÀº µ¿ÀÏÇÔ)

# code(¶Ç´Â text) ¿µ¿ª
- compileµÈ instruction(machine code)°¡ ÀúÀåµÇ´Â ¿µ¿ª

# data ¿µ¿ª
- ÃʱâÈ­µÈ Àü¿ª º¯¼ö°¡ ÇÒ´çµÇ´Â ¿µ¿ª

# bss ¿µ¿ª
- ÃʱâÈ­µÇÁö ¾ÊÀº Àü¿ª º¯¼ö°¡ ÇÒ´çµÇ´Â ¿µ¿ª

# stack ¿µ¿ª
- ÇÔ¼ö call ½Ã¿¡ »ç¿ëµÇ´Â snapshot/context ÀúÀåÀ» À§ÇÑ ¿µ¿ª
  Áö¿ªº¯¼ö ¶ÇÇÑ stack¿¡ ÇÒ´çÀÌ µÊ

# heap ¿µ¿ª
- malloc¿¡ ÀÇÇÑ dynamic memory allocationÀ» À§ÇÑ ¿µ¿ª


linker command fileÀº ÀÌ·¯ÇÑ ¿µ¿ªÀ» ½ÇÁ¦ memoryÀÇ ¾î¶² ºÎºÐ¿¡
¼³Á¤À» ÇÒ °ÍÀÎÁö linker¿¡ ¾Ë·ÁÁØ´Ù.
¿¹¸¦ µé¸é,
code ¿µ¿ªÀº 0x100000 ¹øÁöºÎÅÍ 1Mbyte,
data ¿µ¿ªÀº 0x200000 ¹øÁöºÎÅÍ 2Mbyte,
bss  ¿µ¿ªÀº 0x300000 ¹øÁöºÎÅÍ 512Kbyte,
stack¿µ¿ªÀº 0x400000 ¹øÁöºÎÅÍ 512Kbyte,
heap ¿µ¿ªÀº 0x500000 ¹øÁöºÎÅÍ 2Mbyte,
¿Í °°ÀÌ °³¹ßÀÚ°¡ ¿øÇÏ´Â µ¥·Î ÁöÁ¤ÀÌ °¡´ÉÇÏ´Ù.
linker´Â ÀÌ·¯ÇÑ linker command fileÀ» ÂüÁ¶Çؼ­,
ÇØ´ç ¿µ¿ªÀ¸·Î ÄÚµå ¹× º¯¼öµéÀ» ÇÒ´çÇÏ°í,
Á¢±Ù(access, Áï read/write)¿¡ ÇÊ¿äÇÑ Àý´ëÀûÀÎ address¸¦
°è»êÇÏ¿© ±â°è¾î(Machine Instruction)¿¡ ÇÊ¿äÇÑ ¾îµå·¹½º¸¦
ÄÚµå»ó¿¡ ½É¾îÁÖ°Ô µÈ´Ù.


À̹ø Àå¿¡¼­´Â compiler/linker°¡ ¾î¶»°Ô memory¿¡
º¯¼ö ¹× Äڵ带 ÇÒ´çÇÏ´ÂÁö ¾Ë¾Æº¸¾Ò½À´Ï´Ù.
À̹ø °­ÀǸ¦ ÅëÇؼ­ Å« °³³ä¸¸ Àâ°í,
³ªÁß¿¡ ±¸Ã¼ÀûÀÎ coding/debuggingÀ» Çϸ鼭,
½ÇÁ¦ º¯¼ö¿Í ÄÚµåÀÇ memory ÁÖ¼Ò¸¦ Çѹø µû¶ó°¡ º¸½Ã¸é,
Á¶±Ý ´õ ±× ½Çü¸¦ ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ½ Àå¿¡¼­´Â ±¸Ã¼ÀûÀÎ ¿¹Á¦ code¸¦ ÅëÇؼ­
½ÇÁ¦ º¯¼öµéÀÌ ¾î¶»°Ô memory¿¡ ÇÒ´çÀÌ µÇ´ÂÁö ¾Ë¾Æº¸°Ú½À´Ï´Ù.

Best Regqrds,
Wolverine

  Hit : 8088     Date : 2012/07/05 09:48



    
show1546 °­ÀÇ Á¤¸» °¨»çÇÕ´Ï´Ù. Á¦°¡ ¿äÁò ¹öÆÛ¿À¹öÇÃ·Î¿ì °øºÎ¸¦ ÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ ºÐ¾ß °øºÎ¿¡ µµ¿òÀÌ ¸¹ÀÌ µÉ°Í °°½À´Ï´Ù. ÇʱâÇÏ°í °©´Ï´Ù ¤¾¤¾ ½Ã°£ÀÌ Á» °É·È³×¿ä ÇʱâÇϸ鼭 º¸´Ùº¸´Ï! Á¤¸»°¨»çÇÕ´Ï´Ù! 2012/07/17  
     [°øÁö] °­Á¸¦ ¿Ã¸®½Ç ¶§´Â ¸»¸Ó¸®¸¦ ´Þ¾ÆÁÖ¼¼¿ä^¤Ñ^ [29] ¸Û¸Û 02/27 19477
1596   [pwnable.kr] bof     ÇØÅ·ÀßÇÏ°í½Í´Ù
12/25 8
1595   [pwnable.kr] Shellshock[1]     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/23 126
1594   ShellshockÀÇ ±âº» ¿ä¾à     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/23 108
1593   [pwnable.kr] fd     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/23 102
1592   VPNÀÌ ¿¬°áµÇ¾ú´Ù°¡ µµÁß¿¡ ²¨µµ À¥ ºê¶ó¿ìÀú»ó¿¡¼­ À¯ÁöµÇ´Â ÀÌÀ¯     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/22 109
1591   ÇØÄ¿µéÀÌ ÇØÅ·½Ã »ç¿ëÇÏ´Â µð·ºÅ丮 °ø°£[1]     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/22 148
1590   Keyboard Hooking -part2 - (Python3 ver)     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/20 125
1589   [Windows API] Keyboard Hooking     ÇØÅ·ÀßÇÏ°í½Í´Ù
11/20 102
1588   [pwnable.kr] cmd1 °ø·«     ÇØÅ·ÀßÇÏ°í½Í´Ù
10/23 263
1587   netdiscover ÆÄÀ̽ãÀ¸·Î ±¸ÇöÇϱ⠠   ÇØÅ·ÀßÇÏ°í½Í´Ù
08/13 541
1586   ÆÄÀ̽ãÀ» ÀÌ¿ëÇÑ ½ÉÇà À¥ Å©·Ñ·¯     ÇØÅ·ÀßÇÏ°í½Í´Ù
08/13 429
1585   ÆÄÀ̽ã random¸ðµâÀ» ÀÌ¿ëÇÑ ¼ýÀÚ¸ÂÃ߱⠰ÔÀÓ ±¸Çö     ÇØÅ·ÀßÇÏ°í½Í´Ù
05/30 983
1584   ÆÄÀ̽ã äÆà ÇÁ·Î±×·¥ ±¸Çö     ÇØÅ·ÀßÇÏ°í½Í´Ù
05/28 872
1583   ÆÄÀ̽㠼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀÇ ±âÃÊ     ÇØÅ·ÀßÇÏ°í½Í´Ù
05/26 1025
1582   ¸®´ª½º À¥ ·Î±× ºÐ¼®     ÇØÅ·ÀßÇÏ°í½Í´Ù
05/20 687
1581   ¸®´ª½º/À©µµ¿ì º¸¾È Àåºñ ·Î±×     ÇØÅ·ÀßÇÏ°í½Í´Ù
05/20 836
1580   °í¼ö´ÔµéÀÇ µµ¿òÀ» ¹Þ°í ½Í½À´Ï´Ù     vbnm111
02/11 927
1579   ¸®´ª½º Ä¿³Î 2.6 ¹öÀü ÀÌÈÄÀÇ LKM     jdo
07/25 1441
1578   ½©ÄÚµå ¸ðÀ½     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/15 2323
1 [2][3][4][5][6][7][8][9][10]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org