http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1405 [º¹»ç]
¿äÁò¿¡ ¸îÂ÷·Ê ´ëȸµéÀ» °ÞÀ¸¸é¼.. ¸®´ª½º ¹®Á¦´Â °ÅÀÇ ¸®¹ö½ÌÀ» Çؾ߸¸ Ç®¸®´Â°Ô ´ëºÎºÐÀÌ´õ±º¿ä.
µû·Î ¹¹ ¸®´ª½º ¸®¹ö½ÌÀ̶ó°í °øºÎÇÒ Ä¿¹Â´ÏƼµµ ¾ø°íÇؼ.
Á÷Á¢ °øºÎÇÑ ³»¿ëÀ» °øÀ¯ÇÏ·Á°íÇÕ´Ï´Ù.
°Áµµ ¾Æ´Ï°í..°ÅÀÇ ÃßÃø¼º ³»¿ëÀ̸¹Áö¸¸,
°øÀ¯ÇϹǷνá Á¦°¡ ¸ô¶ú¶²°Å ´©±º°¡ ¹Ù·ÎÀâ¾ÆÁÖ°í, ¸ô¶ú¶²»ç¶÷Àº ¾Ë°ÔµÇ´Â °è±â°¡ µÉ¼öÀÖÁö¾ÊÀ»±îÇؼ¿ä.
Ʋ¸®°Å³ª º¸Ãæ¼³¸íÀº ¾ðÁ¦¶óµµ ȯ¿µÀÔ´Ï´Ù.
¾ÕÀ¸·Î Áö¼ÓÀûÀ¸·Î ¿Ã¶ó°¥²¨°í,,
±âº»ÀûÀÎ ÇÁ·Î±×·¥ºÎÅÍ Áö¼ÓÀûÀ¸·Î ¸®¹ö½ÌÇسª°¥°Ì´Ï´Ù.
°Á´ ¾Æ´ÏÁö¸¸ Áú¹®À̳ª Ãß°¡ÀûÀÎ »çÇ׿¡´ëÇØ Áú¹®ÇÏ½Ã¸é ´äº¯Àº ¼º½É¼ºÀDz¯ ´Þ°Ù½À´Ï´Ù.
Âü°í·Î À̱ÛÀ» º¸±âÀü¿¡ ±âº»ÀûÀÎ ¾î¼À ¹®¹ýÁ¤µµ´Â ¾Ë¾ÆµÎ´Â°Ô ÁÁ½À´Ï´Ù.
#include<stdio.h>
int main(int argc,char *argv[])
{
return 1;
}
RedHat 2.4.32 (gcc 3.2.2)
0x080482f4 <main+0>: push ebp
//±âÁ¸¿¡ »ç¿ëµÇ´ø ebp ÁÖ¼Ò¸¦ ½ºÅÿ¡ ÀúÀå..(¹é¾÷°³³ä)
0x080482f5 <main+1>: mov ebp,esp
//ÇöÀç ½ºÅà ÁÖ¼Ò¸¦ ¾ÕÀ¸·Î »ç¿ëÇÒ base pointer·Î ¼³Á¤.
0x080482f7 <main+3>: sub esp,0x8
//esp-8
0x080482fa <main+6>: and esp,0xfffffff0
//esp AND 0xfffffff0 Áï, espÁÖ¼ÒÀÇ ¸¶Áö¸· ÀÚ¸®¸¸ 0À¸·Î ¼¼ÆÃ
0x080482fd <main+9>: mov eax,0x0
//eax = 0
0x08048302 <main+14>: sub esp,eax
//esp = esp - eax(0)
----------------ÇÁ·Ñ·Î±×-------------------
0x08048304 <main+16>: mov eax,0x1
//eax = 1 (ÇÔ¼ö³»ÀÇ ¸¶Áö¸· eax´Â return value·Î½á »ç¿ëµÈ´Ù.)
----------------¿¡Çʷα×-------------------
0x08048309 <main+21>: leave
//ÇÔ¼ö ¿¡Çʷα׺κÐ, ÇöÀç ½ºÅÿ¡¼ exit ÇÔ.
0x0804830a <main+22>: ret
//leave¿¡ ²À µÚµû¶ó¾ßÇϸç ÇÔ¼ö°¡ º»·¡ ÁÖ¼Ò·Î ¸®ÅÏÇÔ.(¿©±â¼± ¿î¿µÃ¼Á¦·Î.)
0x0804830b <main+23>: nop
FreeBSD 8.0-RELEASE #0 (gcc 4.2.1)
0x080483d0 <main+0>: lea ecx,[esp+4]
//espÁÖ¼Ò¿¡+4 ÇÑ ÁÖ¼Ò°ªÀ» ecx¿¡ ´ëÀÔ.(esp°¡ 0xfffff1 ÀÌ¿´´Ù¸é ecx´Â0xfffff5µÊ)
0x080483d4 <main+4>: and esp,0xfffffff0
//ÇöÀç esp¿Í 0xfffffff0À» and. ¿ª½Ã³ª espÁÖ¼ÒÀÇ ¸¶Áö¸· ÀÚ¸®¸¸ 0À¸·Î ¼¼ÆÃ
0x080483d7 <main+7>: push DWORD PTR [ecx-4]
//ÃÖÃÊesp+4 = ecx, ecx-4 = ÃÖÃÊesp ¸¦ 32ºñÆ®´ÜÀ§·Î ½ºÅÿ¡push
0x080483da <main+10>: push ebp
//ÇöÀç ebp°ª ½ºÅÿ¡ Ǫ½¬(¹é¾÷°³³ä)
0x080483db <main+11>: mov ebp,esp
//ÇöÀç esp(¸¶Áö¸·ÀÚ¸®°¡ 0À̵È) ¸¦ ebp¿¡ µ¤¾î¾¸.
0x080483dd <main+13>: push ecx
//ÃÖÃÊ esp+4 = ecx , ecx¸¦ ½ºÅÿ¡ Ǫ½¬ÇÔ.
----------------ÇÁ·Ñ·Î±×-------------------
0x080483e8 <main+24>: mov eax,0x1
//eax = 1 , ÇÔ¼ö ³» ¸¶Áö¸· eax°ªÀº return value.
----------------¿¡Çʷα×-------------------
0x080483f0 <main+32>: pop ecx
//ecx ´Ù½Ã ²¨³»¿È.
0x080483f1 <main+33>: pop ebp
//ebp ´Ù½Ã ²¨³»¿È.
0x080483f2 <main+34>: lea esp,[ecx-4]
//ÃÖÃÊÀÇ esp+4 = ecx, ecx-4 = ÃÖÃÊesp ¸¦ ´Ù½Ã esp¿¡ ³Ö¾îÁÜ.
//°á±¹ esp¸¦ ´Ü¼øÈ÷ ecx¿¡ ¹é¾÷ÇÏÁö¾Ê°í.+4 -4 ¸¦ ÀÌ¿ëÇؼ ±âÁ¸ esp¸¦ »ç¿ëÇÏ°ÔÇÔ.
0x080483f5 <main+37>: ret
|
Hit : 10323 Date : 2010/02/24 08:07
|