http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=1119 [º¹»ç]
ÀÎÅͳݿ¡¼ ÀڷḦ ã´Ù°¡ ÇÑ »çÀÌÆ®¿¡¼ ¼ÐÄÚµå ÀÛ¼º ¹®¼¸¦ º¸´Ù°¡ ÀÌÇØ°¡ Àß
¾ÈµÇ´Â ºÎºÐÀÌ ÀÖ¾î¼.. Áú¹®µå¸³´Ï´Ù.
¹Ø¿¡ ºÎºÐ ³»¿ëÁß¿¡
0x80481e2 <main+6>: movl $0x808b228,0xfffffff8(%ebp)
name[0] = "/bin/sh"; %ebp¸¦ ±âÁØÀ¸·Î -8¹ÙÀÌÆ® À§Ä¡¿¡ ¹®ÀÚ¿ÀÇ ÁÖ¼Ò¸¦ ³ÖÀ½.
ebp¸¦ ±âÁØÀ¸·Î -8¹ÙÀÌÆ® À§Ä¡¿¡ ¹®ÀÚ¿ÀÇ ÁÖ¼Ò¸¦ ³ÖÀº´Ù°í Çߴµ¥ ebp¸¦ ±âÁØÀ¸·Î
-8¹ÙÀÌÆ® À§Ä¡ °è»êÀº ¾î¶»°Ô Çϳª¿©?
ÀÌ¿ÕÀÌ¸é ½ºÅÿ¡ ½×ÀÌ´Â °úÁ¤ÀÌ ±Ã±ÝÇÕ´Ï´Ù ^^
[willy@Null@Root]$ cat test51.c
main()
{
char *name[2];
name[0] = "/bin/sh";
name[1] = NULL;
execve(name[0],name,NULL);
}
0x80481dc <main>: push %ebp
0x80481dd <main+1>: mov %esp,%ebp
ÇÔ¼ö¿¡ ÷µé¾î ¿À¸é¼ %ebp¸¦ Ãʱâ %esp°ªÀ¸·Î ¼³Á¤ÇÑ´Ù.
0x80481df <main+3>: sub $0x8,%esp
char *name[2]; ÁÖ¼Ò(4¹ÙÀÌÆ®) * 2 = 8¹ÙÀÌÆ®¸¦ º¯¼ö°ø°£À¸·Î È®º¸.
0x80481e2 <main+6>: movl $0x808b228,0xfffffff8(%ebp)
name[0] = "/bin/sh"; %ebp¸¦ ±âÁØÀ¸·Î -8¹ÙÀÌÆ® À§Ä¡¿¡ ¹®ÀÚ¿ÀÇ ÁÖ¼Ò¸¦ ³ÖÀ½.
0x80481e9 <main+13>: movl $0x0,0xfffffffc(%ebp)
name[1] = NULL; %ebp±âÁØ -4¹ÙÀÌÆ® À§Ä¡¿¡ 0À» ³ÖÀ½.
0x80481f0 <main+20>: push $0x0
0À» stack¿¡ ÀúÀåÇÔ.
0x80481f2 <main+22>: lea 0xfffffff8(%ebp),%eax
%ebp -8¿¡ ÁÖ¼Ò(¹®ÀÚ¿ÁÖ¼Ò)¸¦ %eax¿¡ ³ÖÀ½. ÁÖ¼ÒÀÇ ÁÖ¼Ò.
0x80481f5 <main+25>: push %eax
¹®ÀÚ¿ ÁÖ¼ÒÀÇ ÁÖ¼Ò¸¦ stack¿¡ ÀúÀåÇÔ.
0x80481f6 <main+26>: pushl 0xfffffff8(%ebp)
¹®ÀÚ¿ÀÇ ÁÖ¼Ò¸¦ stack¿¡ ÀúÀåÇÔ.
0x80481f9 <main+29>: call 0x804c36c <__execve>
execve()ÇÔ¼ö¸¦ È£ÃâÇÔ.
0x804c36c <__execve>: push %ebp
0x804c36d <__execve+1>: mov $0x0,%eax
0x804c372 <__execve+6>: mov %esp,%ebp
|
Hit : 2456 Date : 2006/06/18 04:22
|