课程名称:计算机系统原理实验

实验课时:32课时

实验项目名称:BombLab二进制炸弹

实验材料:可执行文件bomb、源代码bomb.c、说明README

实验环境:Linux操作系统(安装虚拟机和Ubuntu)

实验工具:调试工具gdb

实验内容:程序运行中有6道关卡(phases),每道关卡需要用户在终端上输入特定的字符串。输入正确则炸弹解除,错误则炸弹引爆。

实验方法:

1.将程序反汇编成汇编语言。

2.结合C语言文件找到每个关卡的入口函数。

3.然后分析汇编代码,找到每个phase中引导程序跳转到explode_bomb程序的地方。

4.分析其成功跳转的条件——以此为突破口寻找应该输入的字符串!

【实验分析】

预先准备

首先查看整个bomb.c的代码,发现整个炸弹组是由6个小炸弹(函数)组成的。整个main函数比较简单,函数间变量几乎没有影响。因此,只需要依次解除6个小炸弹即可。

实验材料只有一个可执行文件,先把他用objdump -d反汇编得到汇编文件。打开文件发现对应6个phase,对应的汇编文件十分长,因此我们直接步入phase部分。

phase_1:

利用gdb调试,gdb bomb

disassemble phaes_1

经分析,答案极有可能存放在0x804a15c处

可看汇编代码如上图所示,以下为栈帧的计算过程

我们看到如上图所示,调用了一个函数,根据名字判断是判断两个字符串是否相等。我们找到这个函数来验证我们的猜想是否正确:

在gdb下调试,设立断点,并检验

phase_2:

disassemble phase_2

可看到phase_2的汇编代码以及理解,利用一个循环,不断计算出这个六位密码。

栈帧的计算步骤

a[0]=0 a[1]=1 a[2]=a[0]+a[1]=1 a[3]=a[2]+a[1]=2 a[4]=3 a[5]=5

即答案猜想为? 0 1 1 2 3 5,下面进行检验

gdb下进行调试检验

总结

通过这次『拆弹』的历练,我对数据在内存中以及汇编的表示方法有了更加深刻的认识,做得过程可能有时候会摸不着头脑,这个时候告诉自己冷静,相信自己。

phase_3:

利用gdb调试,gdb bomb

disassemble phaes_3

通过汇编代码画出栈的情况可看汇编代码如上图所示,以下为栈帧的计算过程

可以看到调用 函数sscanf,那么sscanf 函数是做什么用的的呢?查阅资料如下:

??function

sscanf

int sscanf ( const char * s, const char * format, ...);

Read formatted data from string

Reads data from s and stores them according to parameter format into the locations given by the additional arguments, as if scanf was used, but reading from s instead of the standard input ( stdin).The additional arguments should point to already allocated objects of the type specified by their corresponding format specifier within the format string.

Return Value

On success, the function returns the number of items in the argument list successfully filled. This count can match the expected number of items or be less (even zero) in the case of a matching failure.In the case of an input failure before any data could be successfully interpreted, EOF is returned.成功时, 该函数返回已成功填充的参数列表中的个数。在匹配的失败情况下, 此计数可以与预期的参数个数匹配, 或小于 (甚至为零)。

在成功解释任何数据之前输入失败的情况下, 将返回 EOF

即这个函数的返回值为函数接收到的有效参数的个数

结合有疑问的语句

0x08048eb5 :mo

计算机系统二进制炸弹实验报告,二进制拿炸弹实验报告完整版.doc相关推荐

  1. 冯诺伊曼计算机釆用二进制,大一新生计算机考试重点复习资料(完整版).docx...

    大一新生计算机考试重点复习资料(完整版) 第--部分 完整的计算机系统由(c )组成. 运算器.控制器.存储器.输入设备和输出设备 主机和外部设备 硬件系统和软件系统 主机箱.显示器.键盘.鼠标.打印 ...

  2. 兰州交通大学C语言课程设计,兰州交通大学C语言课程设计报告(完整版).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp实验设计 兰州交通大学C语言课程设计报告(完整版).doc12 ...

  3. 2019年抖音数据报告趣味解读(附PDF完整版下载)

    昨天(2020.01.06)抖音发布了2019年的抖音数据报告,从2019.1到2020.1一年的时间,日活从2.5亿到4亿,增长1.5亿,这速度也没谁了,怪不得微信慌了. 铲屎官的行业里,以后可能还 ...

  4. 惊人的预测——来自2019麦肯锡报告《中国与世界》完整版

    来源:麦肯锡全球研究院 自从中国开始建立与世界各国的经济往来.拥抱市场机制,并积极接纳全球最佳实践以后, 中国经济便迈入了腾飞阶段.如今,中国已凭借其庞大的经济体量跻身全球大国之列.中国在2013年跃 ...

  5. PHP结课报告-简单的点菜系统(完整版,附源码与数据库)

    1 系统背景及意义 1.1系统开发背景介绍 餐饮业在我国有着悠久的发展历史,是与人民生活密切相关的 行业之一,同时也是我国经济增长的新亮点,在 2010 年全国餐饮零 售总额高达 15913 亿元,实 ...

  6. 计算机系统基础实验——拆除二进制炸弹

    实验简要介绍:      该实验是书籍深入理解计算机操作系统中最有趣的实验之一,主要使用 gdb来拆解二进制(或者说程序)的一个文件,了解其运行逻辑.我们对这个程序的了解有: 有六个关卡,分别是 ph ...

  7. 计算机组成原理课程设计报告 给出指令执行流程 add(二进制加法),《计算机组成原理》课程设计报告材料...

    <计算机组成原理>课程设计报告材料 (28页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实用文档电子信息学院实验报告书课程 ...

  8. 山东大学计算机组成与设计实验六 二进制补码加法器实验

    山东大学计算机组成与设计实验六 二进制补码加法器实验, 山东大学计算机组成与设计实验, 山东大学计算机组成与设计实验报告, 计算机组成原理实验报告, 山东大学计算机组成原理实验报告 文章目录 实验6 ...

  9. 数字电路实验(05)二进制计数器设计

    数字电路实验(05)二进制计数器设计 一.实验要求 1.1.实验目的 认识二进制同步计数器的定义.工作状态及信号波形: 熟悉基于JK触发器实现二进制同步计数器的构成规则. 1.2.实验器材 VCC G ...

最新文章

  1. 大三下学期第一周总结
  2. python需要音语基础_英语基础一般,如何才能学习C语言编程和Python
  3. x265-确定slice type-2
  4. SharePoint无代码工作流设计开发实例——交通费报销流程(三)
  5. 机器人的艺术,是什么样子的?
  6. $_FILES[file]['error']
  7. 高通说要抢占AI生态入口,投资商汤摩拜,明年推NPU芯片
  8. 谢惠民,恽自求,易法槐,钱定边编数学分析习题课讲义习题参考解答
  9. 关于socket的简单的客户服务端编程
  10. 存储端显示主机链路降级_链路优化、产品升级,腾讯广告让汽车营销更轻松
  11. ezcad旋转轴标刻参数_激光打标机软件ezcad中菜单下的旋转轴标刻功能介绍及其操作设置...
  12. MMKV_高性能MMKV数据交互分析-MMKV初始化
  13. 模拟电子技术基础概念
  14. Python网络爬取科目一题库(1685道)2021.1.3
  15. iperf3带宽测试工具
  16. 2018东北四省赛参赛总结
  17. Parity(奇偶校验)和ECC(错误检查和纠正)
  18. 鲁大师2023年Q1手机报告:ColorOS蝉联榜首
  19. 【Vue】后台管理系统
  20. 杭电计算机学硕专硕2019,2019杭电计算机考研总结

热门文章

  1. springboot二手车交易系统毕业设计源码131456
  2. 如何快速在Ubuntu18.04.1上安装k8s1.20的简明教程
  3. Python - 面向对象编程
  4. acml会议级别_人工智能领域的顶级学术会议大全(二)
  5. 基于SSM整合的驾照在线考试系统
  6. 自动化测试之Appium
  7. Mac电脑高效办公必备武器——雷神Thor
  8. android 通知 广告,解决三星/小米等Android手机通知栏推送广告的问题
  9. 计算机地图制图的生产流程包括,2012注册测绘师综合:计算机地图制图生产工艺...
  10. 效率最高的两种项目沟通方式