课程实验报告

课 程 名 称: 计算机组成与结构

实验项目名称: bomblab

专 业 班 级:

姓 名:

学 号:

指 导 教 师:

完 成 时 间: 2016 年 4 月 20 日

信息科学与工程学院

实验题目:bomblab

实验目的:程序运行在linux 环境中。程序运行中有6 个关卡(6 个phase),每个phase

需要用户在终端上输入特定的字符或者数字才能通关,否则会引爆炸弹!那么如何才

能知道输入什么内容呢?这需要你使用gdb 工具反汇编出汇编代码,结合c 语言文件

找到每个关卡的入口函数。然后分析汇编代码,找到在每个phase 程序段中,引导程

序跳转到“explode_bomb”程序段的地方,并分析其成功跳转的条件,以此为突破口

寻找应该在命令行输入何种字符通关。

实验环境:ubuntu14.04 虚拟机、gdb 工具

实验内容及操作步骤:

首先打开bomb.c 文件,发现这个文件里只有主函数,没有具体的代码,所以我们

要通过反汇编得到6 关的具体代码。

反汇编有两个具体的方法:

第一种:objdump -d bomb > 1.txt 将反汇编结果输出到1.txt 中

第二种:使用gdb 调试bomb,命令为(gdb)disas func_name,其中func_name

对应于本次实验中的六个函数phase_1~6,再将结果复制到word 中。

我采用第二种方法得到反汇编代码,下面对六个bomb 进行分析、得到我们拆炸弹

所需的密码。

Phase_1 内容如下

0x08048f61 : push %ebp

0x08048f62 : mov %esp,%ebp

0x08048f64 : sub $0x18,%esp 这里对esp-24

0x08048f67 : movl $0x804a15c,0x4(%esp) 这是将$0x804a15c 处的

值存入esp+4 中

0x08048f6f : mov 0x8(%ebp),%eax ebp+8 就是从调用函数处取出第

一个参数,放到eax 寄存器中

0x08048f72 : mov %eax,(%esp) 将eax 的值传给esp

0x08048f75 : call 0x8048fab 此处是入口函

数的地址0x8048fab,该函数要调用的参数为esp+4(即$0x804a15c 处的值),和ebp+8

(即我们输入的值)该函数的作用是 :判断字符串是否相等

考虑一个函数的返回值要存在eax 中,则以下的eax 已经发生改变,是判断字符

串是否相等的结果

0x08048f7a : test %eax,%eax

0x08048f7c : je 0x8048f83

0x08048f7e : call 0x80490d1

以上三句,如果eax 不为0,则引爆炸弹,如果eax 为0,则跳转到leave 语句函

数结束。说明eax 为0 时,可以进入下一关

0x08048f83 : leave

0x08048f84 : ret

解题过程:

本题的栈帧结构如下:

根据以上分析,我们发现,从键盘输入一个值,放到 (新)ebp+8 中,接着函数

进行调用,把他传到esp 中,接着,函数再从$0x804a15c 这个地址取值,放到esp+8

中,接着,程序对这两个参数进行函数调用,调用判断字符串是否相等的程序string

not equal 进行判断,如果二者相等,则返回值为0,不引爆炸弹,反之,只要二者不

相等,则炸弹爆炸。

分析结论:此处的密码存在地址$0x804a15c 中,我们只要查看该地址

湖南大学计算机系统原理实验,湖南大学-计算机组成原理实验-实验3-bomblab_图文.pdf...相关推荐

  1. 计算机原理存储器实验报告,计算机组成原理存储器实验报告.doc

    文档介绍: 福建农林大学计算机与信息学院信息工程类实验报告 系: 计算机系专业: 计算机科学与技术年级: 2007级 姓名: 学号: 实验课程: 计算机组成原理 实验室号:__ 实验设备号: 1 实验 ...

  2. 计算机组成运算器原理实验报告,计算机组成原理运算器实验报告

    计算机组成原理运算器实验报告 计算机组成原理实验一 运算器实验 一.实验目的:1.掌握简单运算器的数据传输方式.2.验证运算功能发生器(74LS181)及进位控制的组合功能. 二.实验要求: 完成不带 ...

  3. 计算机组成数据通路组成实验报告,计算机组成原理数据通路实验报告.docx

    计算机组成原理数据通路实验报告 计算机组成原理实验报告 实验一基本运算器实验 一.实验目的 1.了解运算器的组成结构 2.掌握运算器的工作原理 3.深刻理解运算器的控制信号 二.实验设备 PC机一台. ...

  4. 计算机组成原理在线实验,《计算机组成原理》实验.doc

    实验一.运算实验算术逻辑 一.实验目的 掌握简单运算器的数据传送通路 验证运算功能发生器(74LS181)的组合功能 二.实验设备 CCT-IV计算机组成原理教学实验系统一台,排线若干. 实验原理 实 ...

  5. 计算机组成原理脱机运算器实验数据,计算机组成原理运算器实验.doc

    <计算机组成原理运算器实验.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<计算机组成原理运算器实验.doc>文档请在天天文库搜索. 1.科 技 ...

  6. 计算机组成原理运算器实验6,计算机组成原理运算器实验.doc

    文档介绍: 成绩: 计算机原理实验室实验报告 课程: 计算机组成原理 姓名: 袁通 专业: 软件工程 学号: 152056136 日期: 2017年6月 太原工业学院 计算机工程系 实验一:运算器实验 ...

  7. 寄存器堆计算机组成实验,《计算机组成原理》实验报告——寄存器堆

    资料简介 南通大学信息科学技术学院 <计算机组成实验> 实验报告 实验名称 寄存器堆的设计与实现 班级 物联网工程 192 学生姓名 谢焘 学号 1930110689 指导教师 成耀 日 ...

  8. 西安交通大学计算机组成原理实验,西安交通大学计算机组成原理专题实验(上)第一次实验报告.pdf...

    西安交通大学计算机组成原理专题实验(上)第一次实验报告 计算机组成原理专题实验报告(第一次) 学生姓名 专业/班级 计算机11 班 学 号 所在学院 电信学院 指导教师 姜欣宁 提交日期 2013 年 ...

  9. 计算机组成原理_实验三:主存储器原理实验

    实 验 报 告 课程名称:计算机组成原理物理实验 实验项目:主存储器原理实验 实验仪器:数据通路板.控制信号板 一.(PC)→ R2 1. ( PC ) → BUS PC - BUS 2. BUS → ...

  10. 计算机原理实验存储器,计算机组成原理实验存储器.pptx

    计算机组成原理实验存储器 计算机组成原理实验课注意事项 实验箱电源由桌上的电源插板供电,可能会有相邻的两个实验箱共用电源插板的情况.请勿乱拔电源插板上的电源线.为了安全起见,实验完成后需关闭电源插板. ...

最新文章

  1. 行人重识别技术不断突破 安防企业力拔头筹
  2. python怎么安装包-怎么在windows下安装python第三方包
  3. easyui datebox不可编辑设置
  4. 指针学习笔记(更新中)
  5. 通过base标签实现全网页新窗口链接。
  6. 程序员的三门课之项目管理篇
  7. OpenCV/Python:相机标定
  8. java 2 图形设计卷i awt_java 2 图形设计卷i:awt
  9. 双摄测距原理_双摄像头系列原理深度剖析
  10. vue中使用天气插件(和风天气)
  11. 科研伦理与学术规范期末考试1题库
  12. 程序员进阶神器,ProcessOn绘制时序图
  13. 5500xt挖矿算力_(视频)静态计算 RTX 3080 的以太坊挖矿回本周期 白露矿业报告 (20.09.19)...
  14. Apscheduler结合flask进行动态任务管理
  15. layui框架数据表格的批量删除
  16. M(MUMPS)语音中的语法
  17. Windows7 上运行docker实战
  18. IntelliJ IDEA 2018 修改背景颜色 护眼色
  19. 幼儿园安全工作考核、奖惩制度
  20. 阿里云Optane+QLC存储实践案例分享

热门文章

  1. 大数据在未来十年将如何发展
  2. 爬虫 spider10——搭建elk平台,开发服务提供者
  3. leetcode 1047. Remove All Adjacent Duplicates In String | 1047. 删除字符串中的所有相邻重复项(Java)
  4. 【Servlet】Session的特点和使用
  5. 【Java文件操作(一)】递归打印文件目录
  6. 网络协议之:加密传输中的NPN和ALPN
  7. java中ThreadPool的介绍和使用
  8. C++使用StringPiece减少string类的拷贝
  9. Spring Boot——RabbitMQ
  10. JVM系列之内存泄漏