湖南大学计算机系统原理实验,湖南大学-计算机组成原理实验-实验3-bomblab_图文.pdf...
课程实验报告
课 程 名 称: 计算机组成与结构
实验项目名称: 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...相关推荐
- 计算机原理存储器实验报告,计算机组成原理存储器实验报告.doc
文档介绍: 福建农林大学计算机与信息学院信息工程类实验报告 系: 计算机系专业: 计算机科学与技术年级: 2007级 姓名: 学号: 实验课程: 计算机组成原理 实验室号:__ 实验设备号: 1 实验 ...
- 计算机组成运算器原理实验报告,计算机组成原理运算器实验报告
计算机组成原理运算器实验报告 计算机组成原理实验一 运算器实验 一.实验目的:1.掌握简单运算器的数据传输方式.2.验证运算功能发生器(74LS181)及进位控制的组合功能. 二.实验要求: 完成不带 ...
- 计算机组成数据通路组成实验报告,计算机组成原理数据通路实验报告.docx
计算机组成原理数据通路实验报告 计算机组成原理实验报告 实验一基本运算器实验 一.实验目的 1.了解运算器的组成结构 2.掌握运算器的工作原理 3.深刻理解运算器的控制信号 二.实验设备 PC机一台. ...
- 计算机组成原理在线实验,《计算机组成原理》实验.doc
实验一.运算实验算术逻辑 一.实验目的 掌握简单运算器的数据传送通路 验证运算功能发生器(74LS181)的组合功能 二.实验设备 CCT-IV计算机组成原理教学实验系统一台,排线若干. 实验原理 实 ...
- 计算机组成原理脱机运算器实验数据,计算机组成原理运算器实验.doc
<计算机组成原理运算器实验.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<计算机组成原理运算器实验.doc>文档请在天天文库搜索. 1.科 技 ...
- 计算机组成原理运算器实验6,计算机组成原理运算器实验.doc
文档介绍: 成绩: 计算机原理实验室实验报告 课程: 计算机组成原理 姓名: 袁通 专业: 软件工程 学号: 152056136 日期: 2017年6月 太原工业学院 计算机工程系 实验一:运算器实验 ...
- 寄存器堆计算机组成实验,《计算机组成原理》实验报告——寄存器堆
资料简介 南通大学信息科学技术学院 <计算机组成实验> 实验报告 实验名称 寄存器堆的设计与实现 班级 物联网工程 192 学生姓名 谢焘 学号 1930110689 指导教师 成耀 日 ...
- 西安交通大学计算机组成原理实验,西安交通大学计算机组成原理专题实验(上)第一次实验报告.pdf...
西安交通大学计算机组成原理专题实验(上)第一次实验报告 计算机组成原理专题实验报告(第一次) 学生姓名 专业/班级 计算机11 班 学 号 所在学院 电信学院 指导教师 姜欣宁 提交日期 2013 年 ...
- 计算机组成原理_实验三:主存储器原理实验
实 验 报 告 课程名称:计算机组成原理物理实验 实验项目:主存储器原理实验 实验仪器:数据通路板.控制信号板 一.(PC)→ R2 1. ( PC ) → BUS PC - BUS 2. BUS → ...
- 计算机原理实验存储器,计算机组成原理实验存储器.pptx
计算机组成原理实验存储器 计算机组成原理实验课注意事项 实验箱电源由桌上的电源插板供电,可能会有相邻的两个实验箱共用电源插板的情况.请勿乱拔电源插板上的电源线.为了安全起见,实验完成后需关闭电源插板. ...
最新文章
- 行人重识别技术不断突破 安防企业力拔头筹
- python怎么安装包-怎么在windows下安装python第三方包
- easyui datebox不可编辑设置
- 指针学习笔记(更新中)
- 通过base标签实现全网页新窗口链接。
- 程序员的三门课之项目管理篇
- OpenCV/Python:相机标定
- java 2 图形设计卷i awt_java 2 图形设计卷i:awt
- 双摄测距原理_双摄像头系列原理深度剖析
- vue中使用天气插件(和风天气)
- 科研伦理与学术规范期末考试1题库
- 程序员进阶神器,ProcessOn绘制时序图
- 5500xt挖矿算力_(视频)静态计算 RTX 3080 的以太坊挖矿回本周期 白露矿业报告 (20.09.19)...
- Apscheduler结合flask进行动态任务管理
- layui框架数据表格的批量删除
- M(MUMPS)语音中的语法
- Windows7 上运行docker实战
- IntelliJ IDEA 2018 修改背景颜色 护眼色
- 幼儿园安全工作考核、奖惩制度
- 阿里云Optane+QLC存储实践案例分享
热门文章
- 大数据在未来十年将如何发展
- 爬虫 spider10——搭建elk平台,开发服务提供者
- leetcode 1047. Remove All Adjacent Duplicates In String | 1047. 删除字符串中的所有相邻重复项(Java)
- 【Servlet】Session的特点和使用
- 【Java文件操作(一)】递归打印文件目录
- 网络协议之:加密传输中的NPN和ALPN
- java中ThreadPool的介绍和使用
- C++使用StringPiece减少string类的拷贝
- Spring Boot——RabbitMQ
- JVM系列之内存泄漏