bomblab实验报告的.pdf

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
bomblab实验报告的

课程实验报告 课 程 名 称: 计算机组成与结构 实验项目名称: bomb 专 业 班 级: 通信1301班 名: 学 号: 指 导 教 师: 完 成 时 间: 2015 年 5 月 9 日 计算机科学与工程系 1 实验题目:bomb 实验目的:熟悉汇编程序及其调试方法(gdb工具)。 实验环境:个人电脑、linux发行版本。  实验内容及操作步骤: 第一步: ·反汇编bomb 生成汇编代码(输出到out 文件); ·指令:objdump-dbombout。 第二步: ·调试:gdbbomb; ·阅读第一步生成的out 文件中的汇编代码,分别破解phase_1至 phase_6; ·查看某地址内容指令: 1.查看内存地址中的内容:x/n/f/uaddr,n 为内存长度,f 为显示 格式,u 为从当前地址往后请求的字节数(GDB默认4 个bytes),addr 表示某个内存地址; 2.输出内存地址内容:p/f*addr (f表示格式,addr表示地址); 3.运行:(gdb)r; ·思路及实践过程如下: *********************************phase-1******************************** 2 *************************查看某地址单元的字符串************************ ·帧栈指针%ebp和%esp用来传递或读取参数(其在phase2-6中作用相同); ·从第9行的string_not_equal可以推断出本程序为比较两个字符串是否 相等的程序,注意到第5行%esp读取了地址0x804a15c 的内容,查看该地 址内容,发现该地址存储字符串:Wehavetostandwith ourNorthKorean allies.; ·对于第8、10和11行,寄存器%eax 中存储string_not_equal函数的返 回值,当%eax 中存储的值为0 时,程序正确运行,从而验证上述想法,因 此可以猜测本题的答案为上述字符串; ·查看该地址内容指令:p(char*)0x804a15c。 *********************************phase-2******************************** 3 *******************************Fibonacci序列****************************** ·当由第11行的read_six_number可知,该程序读取了六个数,综合整 体代码可推测,答案就是确定这六个数(x1-x6); ·核心代码从第12行开始,-0x20(%ebp)存x1,-0x1c(%ebp)存x2,依次类 推。由第12,13行代码可知x1=0,第14和第15行得x2=1; ·第17行初始化寄存器%ebx 的地址(lea指令)为-0x18(%ebp)的地址, 也就是x3 的地址,%esi 的地址为-0x8(%ebp)的地址,即x6 的上一个地址单 元,%eax保存x1和x2 的和,结果必须与%ebx 的值(x3)相等,再将ebx 加4 (即指向x4),依次循环。循环终止条件为%esi=%ebx,即两者都指向 x6 的上一个内存单元; ·因此结果为:011235 (fibonacci数列的前6项)。 4 *********************************phase-3******************************** ******************************Switch分支结构*****************************

文档评论(0)

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

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

1亿VIP精品文档

相关文档