ÇÁ·Î±×·¡¹Ö

 3198, 1/160 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   hotchoco89
   Æ÷ÀÎÅÍ¿¡¼­¿ä

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3193 [º¹»ç]


Æ÷ÀÎÅ͸¦ Àß ¸ð¸£°Ú¾î¿ä

Á» ÀÌ»óÇÑ °Í °°À½.

¼±¾ð ÇÒ ¶§ int *ptr = #

ÀÌ·¸°Ô Çϴµ¥

¿Ö Ãâ·ÂÇÒ ¶§´Â &num ÀÌ ¾Æ´Ï¶ó numÀÇ °ªÀÌ ³ª¿Ã±î¿ä ??

¸¸µé ¶§ ±×³É Àú·¸°ÔÇÏ¸é ¿¬°á µÈ´Ù°í Á¤Çسõ°í ¸¸µç°Ç°¡¿© ?

  Hit : 4954     Date : 2011/10/18 11:47



    
BrokenPipe ptrº¯¼ö´Â ¾î¶² º¯¼öÀÇ ÁÖ¼Ò°ªÀ» ÀúÀåÇÏ´Â º¯¼ö°í¿ä
°Å±â¿¡ numÀÇ ÁÖ¼Ò°ªÀ» ´ëÀÔÇϰíÀÖ½À´Ï´Ù
ptrÀÇ ÁÖ¼Ò¸¦ numÀÇ ÁÖ¼Ò¿Í °°°ÔÇßÀ¸´Ï numÀÇ °ªÀÌ ³ª¿É´Ï´Ù
2011/10/19  
hotchoco89 ptrÀÇ ÁÖ¼Ò¸¦ numÀÇ ÁÖ¼Ò¶û °°°Ô ÇÑ°Ô ¾Æ´Ï°í ptrÀÌ numÀ» °¡¸£Å°µµ·Ï ÁÖ¼Ò¸¦ ÁذŠ¾Æ´Ñ°¡¿ä ??
ptrÀ̶û numÀÇ ÁÖ¼Ò´Â °¢°¢ Àִ°ÅÀݾƿä?
2011/10/19  
hotchoco89 ±×·¯´Ï±î Á¦ ¸»Àº ½ÇÁúÀûÀ¸·Î ptrÀÌ &numÀ̰í *ptrÀÌ num ÀÎ °ÅÀݾƿä. ±×·¯´Ï±î
int *ptr = num Çϸé ptr¿¡ &numÀÌ µé¾î°¡°Ô ÇØ¾ßÁö ¸»ÀÌ µÇ´Â°Ô ¾Æ´Ñ°¡ Çϴµ¥ ¾Æ´Ñ°¡¿ä?
2011/10/19  
BrokenPipe Æ÷ÀÎÅ͸¦ ±í°Ô ´Ù·ç°í ³Ñ¾î°¡Áö ¾ÊÀºÁö¶ó ¼Ò½ºÄڵ常À¸·Î´Â ÀÌÇØÇϱâ Èûµé¾î¼­
¾î¼Àºí¸®¾î·Î ºÃ´Âµ¥¿ä
»ç¿ëÇÑ ¼Ò½ºÀÔ´Ï´Ù.
#include <stdio.h>
int main(){
int num=4;
int *ptr = #
return 0;
}
±×¸®°í °¢°¢ $ebp-8(num) °ú $ebp-4(ptr) ÀÇ °ªÀÔ´Ï´Ù.
(gdb) x/x $ebp-4
0xbffff764: 0xbffff760
(gdb) x/x $ebp-8
0xbffff760: 0x00000004

±×.. ¿ì¼± int *ptr = # À̶ó°í Çϸé
ptrº¯¼ö¿¡ numÀÇ ÁÖ¼Ò°ªÀÌ µé¾î°¡´Â°Ô ¸Â½À´Ï´Ù
ptr = numÀÇ ÁÖ¼Ò°ª
ÇÏÁö¸¸ ±× ÁÖ¼Ò°ªÀº intÇüÀÇ ¹üÀ§(21¾ï ~ -21¾ï)À» À¢¸¸ÇÏ¸é ³Ñ½À´Ï´Ù.

(gdb) x/x $ebp-4
0xbffff764: 0x00000004
(gdb) x/x $ebp-8
0xbffff760: 0x00000004
ÀÌ°Ô ¸»¾¸ÇϽŠ*ptr=num; Àä
Æ÷ÀÎÅÍ·Î ¼±¾ðÇÑ º¯¼ö´Â ÀÏ¹Ý ½Ç¼öÇüÀ̳ª ¹®ÀÚÇüÀ¸·Î ¼±¾ðÇѰͰú´Â ´Ù¸¥Çü½ÄÀÇ µ¥ÀÌÅ͸¦ °®°ÔµÇ´Â°Í °°½À´Ï´Ù.
½ÇÇèÀ» Á¦´ë·Î ÇØº¸Áø ¾Ê¾Æ¼­ ¸ð¸£°ÚÁö¸¸
*ptr = num; ÀÇ °æ¿ì¿¡¼­´Â
*ptr = 4;
ptrÀ̶ó´Â ¸Þ¸ð¸®¸¦ ´ã´Â Æ÷ÀÎÅͺ¯¼ö¿¡ 4¶ó´Â ¸Þ¸ð¸®ÁÖ¼Ò¸¦ ³Ö¾î¼­
ptrÀº 0x00000004ÀÇ Á¤¼ö°ªÀ» °¡Áö´Â°Ô¾Æ´Ñ
0x00000004ÀÇ ¸Þ¸ð¸®ÁÖ¼Ò°ªÀ» °¡Áö´Â°Í°°½À´Ï´Ù.
ÀÌ ºÎºÐ¿¡ ´ëÇØ¼­´Â ³ªÁß¿¡ Á»´õ ½ÇÇèÇØ ºÁ¾ß°Ú³×¿ä
2011/10/19  
BrokenPipe Áö½ÄÀÌ ¾è¾Æ ~°°½À´Ï´ÙÀÇ ÃßÃøÀ» »ç¿ëÇѰͿ¡ ´ëÇØ¼­´Â Á˼ÛÇÕ´Ï´Ù 2011/10/19  
BrokenPipe »ý°¢À» Á¤¸®ÇÏ°í ¾´ ´ñ±ÛÀÌ ¾Æ´Ï¶ó¼­ ´Ù½Ã Á¤¸®Çغ¸ÀÚ¸é
Æ÷ÀÎÅÍ·Î ¼±¾ðµÈ º¯¼ö´Â ´ëÀԵǴ °ªÀ» ¸Þ¸ð¸®ÁÖ¼Ò·Î °£ÁÖÇϰí
Æ÷ÀÎÅÍ¿¡ Á¢±ÙÇÒ¶© ±× Æ÷ÀÎÅͰ¡ °®°íÀÖ´Â ¸Þ¸ð¸®ÁÖ¼Ò¿¡ Á¢±ÙÇÕ´Ï´Ù
#include <stdio.h>
int main(){
int num=4;
int *ptr = num;
printf(ptr);
return 0;
}
À» ÇØº¸½Ã¸é printfÇÔ¼öÀÇ ÀÎÀÚ¿¡ 0x00000004°¡ Àü´ÞµÇ¾î
¼¼±×¸ÕÆ® ÆúÆ®°¡ ³ª´Â°ÍÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
2011/10/19  
hotchoco89 ´äº¯ °¨»çÇÕ´Ï´Ù. ±×·¯´Ï±î Á¦ ¸»Àº ³í¸®ÀûÀ¸·Î »ý°¢Çغ¸¸é ptrÀÌ numÀÇ ÁÖ¼Ò &numÀ» ÀǹÌÇϴϱî
Æ÷ÀÎÆ® º¯¼ö¸¦ ¼±¾ðÇÒ ¶§ int *ptr; ÇÑ ´ÙÀ½ ptr = # Çϰųª
int *ptr = num; À» ÇÒ ¶§ ¿¬°á µÇ°Ô ÇÏ´Â°Ô ¸ÂÀ» °Í °°Àºµ¥
¿Ö int *ptr = #À» ÇØ¾ß µÇµµ·Ï ¸¸µé¾úÀ»±î¿ä ??
2011/10/19  
BrokenPipe *ptr ÀÚü´Â ¸Þ¸ð¸®ÁÖ¼Ò¸¦ ÀúÀåÇϱâÀ§ÇÑ Æ÷ÀÎÅÍ º¯¼öÀ̱⠶§¹®¿¡
*ptr¿¡ numÀÇ ¸Þ¸ð¸®ÁÖ¼Ò°ªÀ» ³Ö±âÀ§Çؼ­´Â
*ptr = # À» ÇÏ´Â°Ô ´ç¿¬ÇÏ´Ù°í º¸´Âµ¥¿ä;;
¸»¾¸µå·È´Ù½ÃÇÇ ¸¹Àº ½ÇÇèÀ» ÇØº»°Ç ¾Æ´Ï¶ó¼­ È®´äÀº ¸øµå¸®Áö¸¸

int *ptr;
ptr=#
Á¤»óÀûÀ¸·Î ÀÛµ¿µÇ´Â°Í È®ÀÎÇß°í¿ä

int *ptr = num; Àº ¸»¾¸µå·È´Ù½ÃÇÇ numÀÌ °¡Áö°í ÀÖ´Â 4 ¶ó´Â Á¤¼ö°ªÀÌ
ptr¿¡ µé¾î°¡°Ô µÇ¾î 0x00000004¶ó´Â ¸Þ¸ð¸®ÁÖ¼Ò¸¦ °¡¸£ÄѼ­ ¾ÈµÇ´Â°Ì´Ï´Ù
2011/10/19  
Prox Æ÷ÀÎÅÍ °³³äÀº ÀÌÇØÇϼÌÀ¸¸®¶ó »ý°¢µÇ¼­, Æ÷ÀÎÅͼ±¾ð Áú¹®¸¸ ´äÇØµå¸±°Ô¿ä

int *ptr=#
À§¿Í °°ÀÌ, ptrÀ» óÀ½ »ç¿ëÇÒ¶© Æ÷ÀÎÅÍŸÀÔÀ롃 ¾Ë·ÁÁà¾ß ÇϹǷΠ*ptrÀ̶ó°í Àû¾î¾ß¸¸Çϰí...
±×ÈÄ¿¡ ÇØ´ç º¯¼ö(Æ÷ÀÎÅÍŸÀÔ ptr)¿¡ ³ÖÀ» °ª(&num)À» Àû¾îÁÖ´Â°Ô ¸Â½À´Ï´Ù.

Çò°¥¸®½Å´Ù¸é ÀÌ·¸°Ô »ý°¢Çغ¸¼¼¿ä. ¶ç¾î¾²±â¸¸ ¹Ù²ã¼­ ¾²¸é ¸íÈ®È÷ º¸Àϰ̴ϴÙ

int* ptr = # //Æ÷ÀÎÅÍŸÀÔ(int*) ¼±¾ð°ú µ¿½Ã¿¡ ´ëÀÔ (ptr=&num)

int* ptr; //¼±¾ð
ptr = # //ÁÖ¼Ò´ëÀÔ
2011/10/20  
Prox Âü°í·Î.. ¼±¾ð¿¡ »ç¿ëµÇ´Â º°Ç¥(¿¹¸¦µé¸é int *ptr=&num)´Â type declarationÀÇ Àǹ̸¦ °®°í, ±× ¿Ü¿¡ »ç¿ëµÇ´Â °æ¿ì(¿¹¸¦µé¸é int a=*p ¶Ç´Â *p=a)´Â referencingÀÇ Àǹ̸¦ °®½À´Ï´Ù.
µÎ º°Ç¥ ¸ðµÎ Æ÷ÀÎÅÍ¿Í °ü·ÃµÇÀÖÁö¸¸ ¾à°£Àº ´Ù¸¥ ¿ëµµ·Î ¾²ÀÌÁÒ ^^
2011/10/20  
Prox À§¿¡ÀÖ´Â ´ñ±Ûµµ Àá±ñ º¸ÀÚ¸é¿ä..

"int *ptr = num Çϸé ptr¿¡ &numÀÌ µé¾î°¡°Ô ÇØ¾ßÁö ¸»ÀÌ µÇ´Â°Ô ¾Æ´Ñ°¡" ¶ó°í Çϼ̴µ¥..
ptrÀ̶ó´Â Æ÷ÀÎÅͺ¯¼ö¸¦ ¿ì¼± ¼±¾ðÇϰí (int* ptr;)
ptr Æ÷ÀÎÅͺ¯¼ö¿¡ numÀ̶ó´Â Á¤¼öº¯¼ö¸¦ ³ÖÀº °ÍÀ̱⠶§¹®¿¡ (ptr=num;) ŸÀÔ¿¡·¯°¡ µË´Ï´Ù.

int *ptr;
*ptr=num;

À§¿Í°°ÀÌ Àû´Â´Ù°í ÇÏ´õ¶óµµ
*ptr=num; <- À̹®ÀåÀÇ ¶æÀÌ "ptrÀÌ °¡¸®Å°´Â °÷¿¡ numÀÇ °ªÀ» ³Ö¾î¶ó"¶ó´Â ¶æÀ̱⠶§¹®¿¡
ptrº¯¼ö¿¡ numÀÇ ÁÖ¼Ò°¡ ÀúÀåµÇ´Â°Ô ¾Æ´Ï¶ó, ptrº¯¼ö°¡ °¡Áö°íÀÖ´Â ÁÖ¼Ò¿¡ numÀÇ °ªÀ» writeÇÏ·Á°í ½ÃµµÇÏ°Ô µË´Ï´Ù.
(numÀÇ ÁÖ¼Ò´Â ¾îµð¿¡µµ ÀúÀåµÇÁö ¾ÊÀ¸¸ç, ptr¾È¿¡´Â ¾²·¹±â°ªÀÌ µé¾îÀÖÀ¸¹Ç·Î *ptr=numÇÒ¶§ ¸Þ¸ð¸®write¿¡ ½ÇÆÐÇØ¼­ ÇÁ·Î±×·¥ÀÌ crashµÉ°Å¿¡¿ä)
2011/10/20  
Prox ±ÛÀÌ ±æ¾îÁ³´Âµ¥..... ¿ä¾àÇÏÀÚ¸é ¤»¤»

int *ptr=# À̹®ÀåÀº

int *ptrÀÇ ¼±¾ð°ú ptr=&numÀÌ ÇÕÃÄÁø°ÅÁö..
int *ptr°ú *ptr=&numÀÌ ÇÕÃÄÁø°Ô ¾Æ´Õ´Ï´Ù~~

Áï..... int *ptr=# À̹®Àå¿¡¼­ º°Ç¥´Â referencingÀÌ ¾Æ´Ñ type declarationÀÇ Àǹ̸¦ °®´Â´Ü°ÅÁÒ
2011/10/20  
BrokenPipe ±×·¡¼­ int* ptr; À̶ó°í À¢¸¸ÇÏ¸é ´Ùµé ¾²½Ã´õ¶ó°í¿ä
intÇüÆ÷ÀÎÅ͸¦ µ¥ÀÌÅÍÇüÀ¸·Î ÇÏ´Â ptr º¯¼ö.
2011/10/20  
hotchoco89 ¾Æ ±×·¸±º¿ä
±×·± ±íÀº ¶æÀÌ..
´äº¯ °¨»çÇÕ´Ï´Ù.
2011/10/26