p.82 ¿¡ ÀÖ´Â code¸¦ ¼öÇàÇÑ °á°ú
$ cat ex2.c
#include <stdio.h>
int get_area(int x,int y)
{
int area;
printf("ÀÎÀÚ xÀÇ ÁÖ¼Ò 0x%x\n", &x);
printf("ÀÎÀÚ yÀÇ ÁÖ¼Ò 0x%x\n", &y);
printf("ÇÔ¼ö ³» area ÁÖ¼Ò 0x%x\n", &area);
area = x*y;
return area;
}
int main()
{
int x = 10, y = 20;
int area;
printf("xÀÇ ÁÖ¼Ò : 0x%x\n", &x);
printf("yÀÇ ÁÖ¼Ò : 0x%x\n", &y);
printf("areaÀÇ ÁÖ¼Ò : 0x%x\n", &area);
area = get_area(x,y);
printf("»ç°¢ÇüÀÇ ³ÐÀÌ : %d\n",area);
}
$ ./ex2
xÀÇ ÁÖ¼Ò : 0x22ac8c
yÀÇ ÁÖ¼Ò : 0x22ac88
areaÀÇ ÁÖ¼Ò : 0x22ac84
ÀÎÀÚ xÀÇ ÁÖ¼Ò 0x22ac70
ÀÎÀÚ yÀÇ ÁÖ¼Ò 0x22ac74
ÇÔ¼ö ³» area ÁÖ¼Ò 0x22ac5c
»ç°¢ÇüÀÇ ³ÐÀÌ : 200
ÀÌ¿Í °°ÀÌ °á°ú°¡ ³ª¿À´Âµ¥ 0x22ac5c ¿Í 0x22ac70 »çÀÌ¿¡ SFP, RET(Return Address)°¡ ÀÖ´Ù°í Çߴµ¥ Ã¥¿¡ ³ª¿Â ³»¿ëÀ» Àо¸é SFP, RET °¢°¢ 4byte ¶ó°í Çϸé SFP´Â 0x22ac60 RET´Â 0x22ac64·Î ¿¹»óÀÌ µË´Ï´Ù.
±×·¯¸é 0x22ac68, 0x22ac6c ÀÌ ºÎºÐÀÌ ³²°Ô µÇ´Âµ¥ ÀÌ ºÎºÐ¿¡´Â ¹«¾ùÀÌ ÀÖ´Â °ÍÀϱî¿ä??
Âü°í·Î °³¹ßȯ°æÀº windows xp ¿¡¼ cygwin À¸·Î ÄÄÆÄÀÏÇÑ °á°úÀÔ´Ï´Ù. |