- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
修改栈返回地址,改变程序执行流程
修改栈中函数调用返回地址,改变程序执行流程
任务:修改栈中函数调用返回地址,改变程序执行流程
在本例中,通过修改函数function调用返回地址,使程序跳过执行x=1的赋值语句,从而使输出结果为0
为了实现这个目标,需要
1.找到函数调用返回地址在栈中的位置
由于c程序中无法直接取得返回地址,本例中以buffer1地址为基址,通过计算其与返回地址在栈中地址的差值,得到返回地址(在栈中)的地址
对应程序中的7、8句
7 ret=buffer1+12;
8 (*ret)+=5;
buffer1和返回地址通过gdb调试得到
2 .计算所跳过指令与下一条指令的差值,这通过反汇编代码可以直接计算得出
源程序
1 i#includestdio.h
2 void function(int a,int b,int c)
3 {
4 char buffer1[5];
5 char buffer2[10];
6 int *ret;
7 ret=buffer1+12;
8 (*ret)+=5;
9
10 }
11 void main()
12 {
13 int x;
14 x=0;
15 function(1,2,3);
16 x=1;
17 printf(%d\n,x);
18 }
编译:gcc -o e -g e.c
调试:gdb e
反汇编 disassemble main
0x0804844e +0: push %ebp
0x0804844f +1: mov %esp,%ebp
0+3: and $0xfffffff0,%esp
0+6: sub $0x20,%esp
要跳过指令地址
0+9: movl $0x0,0x1c(%esp)
0x0804845f +17: movl $0x3,0x8(%esp)
0+25: movl $0x2,0x4(%esp)
0x0804846f +33: movl $0x1,(%esp)
0+40: call 0x8048414 function
0x0804847b +45: movl $0x1,0x1c(%esp)
0+53: mov $0x8048560,%eax
0+58: mov 0x1c(%esp),%edx
0x0804848c +62: mov %edx,0x4(%esp)
0+66: mov %eax,(%esp)
0+69: call 0x8048338 printf@plt
0+74: leave
0+75: ret
disassemble function:
0+0: push %ebp
Buffer1地址 !
0+1: mov %esp,%ebp
0+3: sub $0x28,%esp
0x0804841a +6: mov %gs:0x14,%eax
0+12: mov %eax,-0xc(%ebp)
0+15: xor %eax,%eax
0+17: lea -0x21(%ebp),%eax
0+20: add $0xc,%eax
0x0804842b +23: mov %eax,-0x1c(%ebp)
0x0804842e +26: mov -0x1c(%ebp),%eax
0+29: mov (%eax),%eax
0+31: lea 0x5(%eax),%edx
0+34: mov -0x1c(%ebp),%eax
0+37: mov %edx,(%eax)
0x0804843b +39: mov -0x
您可能关注的文档
最近下载
- sl176-2026水利水电工程施工质量评定SL223—2026水利水电建设工程验收规程.doc VIP
- 国有建设用地使用权出让地价评估技术规范(试行).pdf VIP
- 2025年下半年新疆塔城地区急需紧缺人才引进243人笔试参考题库附答案解析.docx VIP
- 2025在线学习课堂网课《公共卫生安全风险辨识与防范》单元测试考核答案.pdf VIP
- 《住宅设计规范》GB 50096-2011.pdf VIP
- “双减”背景下初中数学作业设计研究.pdf
- 必威体育精装版质量环境职业健康安全三体系一整套文件(手册+程序文件).pdf VIP
- 广东省深圳市红岭中学物理自主招生试卷 .pdf VIP
- 英国工业标准BS EN 1092-1-2002 中文版 法兰及其连接件-管道、阀门、管件和附件用圆盘法兰,PN标示 第1篇 钢制法兰.pdf VIP
- 广州版小学五年级上、下册英语知识点总结.pdf VIP
文档评论(0)