网站大量收购闲置独家精品文档,联系QQ:2885784924

gcc常用的编译选项对代码的影响.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
gcc常用的编译选项对代码的影响 原始文档:/articles/200112/320.html 创建时间:2001-12-21 浏览次数:78 原创:alert7 (sztcww_at_) 来源:/ gcc常用的编译选项对代码的影响 by alert7 2001-12-21 测试环境 redhat 6.2 ★ 前言 本文讨论gcc的一些常用编译选项对代码的影响。当然代码变了, 它的内存布局也就会变了,随之exploit也就要做相应的变动。 gcc的编译选项实在太多,本文检了几个最常用的选项。 ★ 演示程序 [alert7@redhat62 alert7]$ cat test.c #include stdio.h void hi(void) { printf(hi); } int main(int argc, char *argv[]) { ????????hi(); ????????return 0; } ★ 一般情况 [alert7@redhat62 alert7]$ gcc -o test test.c [alert7@redhat62 alert7]$ wc -c test ??11773 test [alert7@redhat62 alert7]$ gdb -q test (gdb) disass main Dump of assembler code for function main: 0x80483e4 main:?????? push?? %ebp 0x80483e5 main+1:???? mov????%esp,%ebp 0x80483e7 main+3:???? call?? 0x80483d0 hi 0x80483ec main+8:???? xor????%eax,%eax 0x80483ee main+10:????jmp????0x80483f0 main+12 0x80483f0 main+12:????leave 0x80483f1 main+13:????ret .... End of assembler dump. (gdb) disass hi Dump of assembler code for function hi: 0x80483d0 hi:????????push?? %ebp 0x80483d1 hi+1:?????? mov????%esp,%ebp 0x80483d3 hi+3:?????? push?? $0x8048450 0x80483d8 hi+8:?????? call?? 0x8048308 printf 0x80483dd hi+13:??????add????$0x4,%esp 0x80483e0 hi+16:??????leave 0x80483e1 hi+17:??????ret 0x80483e2 hi+18:??????mov????%esi,%esi End of assembler dump. 来看看部分的内存映象 ?????????????????? (内存高址) ??????????????????????????????+--------+ ??????????????????????????????|bffffbc4| argv的地址(即argv[0]的地址) ?????????????????? 0xbffffb84 +--------+ ?????????????????????????????? argc的值 ?????????????????? 0xbffffb80 +--------+ ??????????????????????????????|400309cb|main的返回地址 ?????????????????? 0xbffffb7c +--------+ -- 调用main函数前的esp ??????????????????????????????|bffffb98| 调用main函数前的ebp ?????????????????? 0xbffffb78 +--------+ -- main函数的ebp ??????????????????????????????|080483ec| hi()的返回地址 ?????????????????? 0xbffffb74 +--------+ ??????????????????????????????|bffffb78| 调用hi()前的esp ?????????????????? 0xbffffb70 +--------+ ?????????????????????????????? hi

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档