欢迎来到天天文库
浏览记录
ID:8807760
大小:46.00 KB
页数:10页
时间:2018-04-08
《gcc常用的编译选项对代码的影响》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、gcc常用的编译选项对代码的影响原始文档:http://www.xfocus.net/articles/200112/320.html创建时间:2001-12-21浏览次数:78原创:alert7(sztcww_at_sina.com)来源:http://xfocus.org/gcc常用的编译选项对代码的影响byalert72001-12-21测试环境redhat6.2★前言本文讨论gcc的一些常用编译选项对代码的影响。当然代码变了,它的内存布局也就会变了,随之exploit也就要做相应的变动。gcc的编译选项实在太多,本文
2、检了几个最常用的选项。★演示程序[alert7@redhat62alert7]$cat>test.c#includevoidhi(void){printf("hi");}intmain(intargc,char*argv[]){ hi(); return0;}★一般情况[alert7@redhat62alert7]$gcc-otesttest.c[alert7@redhat62alert7]$wc-ctest 11773test[alert7@redhat62alert7]$g
3、db-qtest(gdb)disassmainDumpofassemblercodeforfunctionmain:0x80483e4: push %ebp0x80483e5: mov %esp,%ebp0x80483e7: call 0x80483d00x80483ec: xor %eax,%eax0x80483ee: jmp 0x80483f00x80483f0<
4、main+12>: leave0x80483f1: ret....Endofassemblerdump.(gdb)disasshiDumpofassemblercodeforfunctionhi:0x80483d0: push %ebp0x80483d1: mov %esp,%ebp0x80483d3: push $0x80484500x80483d8: call 0x80483085、>0x80483dd: add $0x4,%esp0x80483e0: leave0x80483e1: ret0x80483e2: mov %esi,%esiEndofassemblerdump.来看看部分的内存映象 (内存高址) +--------+ 6、bffffbc47、8、argv的地址(即argv[0]的地址) 0xbffffb84+--------+ 9、0000000110、argc的值 0xbffffb80+--------+ 11、400309cb12、main的返回地址 0xbffffb7c+--------+<--调用main函数前的esp 13、 14、bffffb9815、调用main函数前的ebp 0xbffffb78+--------+<--main函数的ebp 16、080483ec17、hi()的返回地址 0xbffffb74+--------+ 18、bffffb7819、调用hi()前的esp 0xbffffb70+--------+ 20、 21、0804845022、"hi"的地址 0xbffffb6c+--------+ 23、......24、 (内存低址)le
5、>0x80483dd: add $0x4,%esp0x80483e0: leave0x80483e1: ret0x80483e2: mov %esi,%esiEndofassemblerdump.来看看部分的内存映象 (内存高址) +--------+
6、bffffbc4
7、
8、argv的地址(即argv[0]的地址) 0xbffffb84+--------+
9、00000001
10、argc的值 0xbffffb80+--------+
11、400309cb
12、main的返回地址 0xbffffb7c+--------+<--调用main函数前的esp
13、
14、bffffb98
15、调用main函数前的ebp 0xbffffb78+--------+<--main函数的ebp
16、080483ec
17、hi()的返回地址 0xbffffb74+--------+
18、bffffb78
19、调用hi()前的esp 0xbffffb70+--------+
20、
21、08048450
22、"hi"的地址 0xbffffb6c+--------+
23、......
24、 (内存低址)le
此文档下载收益归作者所有