计算机系统基础实验介绍 (lab2) - 20191
需积分: 0 93 浏览量
更新于2022-08-03
1
收藏 1.11MB PDF 举报
《计算机系统基础实验》Lab2——Binary Bombs是一个针对Linux环境的实践教学环节,旨在加深学生对程序的机器级表示、汇编语言、调试器和逆向工程的理解。实验的核心是一个名为“Binary Bombs”的C程序,它包含六个阶段(phase1至phase6),每个阶段都要求输入特定字符串以“拆除”炸弹。如果输入错误,程序会输出"BOOM!!!",表示阶段失败。
实验的每个阶段都有不同的重点:
1. 阶段1:涉及字符串比较,测试对字符串操作的理解。
2. 阶段2:涉及循环,可能需要分析循环结构以确定正确输入。
3. 阶段3:涵盖条件/分支,比如switch语句,需要理解控制流程。
4. 阶段4:测试递归调用和栈,需要分析栈帧和递归行为。
5. 阶段5:涉及指针,需要理解指针运算和内存访问。
6. 阶段6:重点是链表、指针和结构,可能需要解析链表数据结构。
此外,还有一个隐藏阶段,需要在第四阶段后输入特定字符串才能触发。
完成实验的关键技术包括使用gdb调试器和objdump工具进行反汇编。通过`objdump –d bomb > asm.txt`生成汇编代码文件。接着,分析汇编代码,寻找各个阶段的入口点,比如在main函数中定位到调用phase1的部分。然后,使用gdb单步调试,理解汇编指令的行为,从而推理出每个阶段所需的输入字符串。
实验提供了一个特定的二进制炸弹程序,每个学生拥有独一无二的版本。程序包括一个可执行文件`bomb`、`bomb.c`(仅包含main函数)以及`README`等文件。通过运行`bomb`程序并输入解密字符串,或者创建一个包含所有阶段答案的文本文件`ans.txt`并运行`./bomb ans.txt`,可以检验答案的正确性。
实验报告应详细记录每阶段的解决过程,包括分析思路、调试步骤和最终得出的字符串。报告需按照指定格式提交,包括实验报告文档和结果文件,以班级和学号命名。提交截止日期为2019年6月10日。
实验步骤演示以phase1为例,首先调用objdump生成汇编代码,然后在`asm.txt`中查找`main`函数,找到调用phase1的代码行,进一步分析以确定输入字符串。通过这种方式,学生逐步深入理解程序的内部运作,提升逆向工程能力。
陈游泳
- 粉丝: 34
- 资源: 301
最新资源
- 基于C++和Qt的火车票预订管理系统源码+项目文档资料+设计报告(课程设计).zip
- 课程设计基于机器学习的Ames房价分析与预测算法(含源码、说明与数据集).zip
- 导航系统-C++设计实现地图导航系统-(全新源码+设计报告及资料).zip
- 北京邮电大学数字逻辑与数字系统课程设计项目成果源码+设计报告.zip
- 英特尔杯全国大学生软件创新大赛项目-(含全部参赛源码及资料).zip
- 基于机器学习的动态车牌识别算法(高分课程设计,含源码与说明).zip
- A095-基于Java的商业辅助决策系统
- 课设基于SpringBoot+SSM+MySQL的智慧校园综合管理系统源码+设计报告.zip
- 机器学习大作业基于深度学习的视频行为分析项目源码及功能说明.zip
- 基于知识图谱的医疗问答系统前端展示 Demo 及后端源码(含说明).zip
- 基于Springboot+vue+mybatisplus+mysql的Tom在线影院票务系统(报告).zip
- 基于深度学习的图片分类项目源代码及技术解析(深度学习作业).zip
- 校园二手书城(微信小程序&APP)毕业设计项目(uniapp&vue2前端).zip
- 基于Java+Springboot+Vue的医院预约挂号小程序系统(前后端分离).zip
- 探地雷达图像处理项目(病害提取与甄别等功能,含源码与说明).zip
- 多功能文本标注工具(支持实体、分类、关系标注,含多种规则).zip