计算机系统基础实验介绍 (lab2) - 20191
《计算机系统基础实验》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的代码行,进一步分析以确定输入字符串。通过这种方式,学生逐步深入理解程序的内部运作,提升逆向工程能力。
剩余22页未读,继续阅读
- 粉丝: 33
- 资源: 301
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C++和Qt框架的游戏工作室服务器管理系统.zip
- (源码)基于Spring Boot的赛事管理系统.zip
- (源码)基于C#和ASP.NET Core的智能家居管理系统.zip
- (源码)基于rosserial的STM32嵌入式ROS通信系统库(Yoneken版改进版).zip
- 9.4 使用生成的识别器模型faceModel.xml预测新图像,并输出匹配结果标签和置信度
- (源码)基于Spring Boot和Shiro的电商管理系统.zip
- (源码)基于Arduino和Blinker的智能时钟控制系统.zip
- (源码)基于C++编程语言的WyoOS操作系统.zip
- 9.3 使用EigenFaceRecognizer训练人脸分类器,并将模型保存为faceModel.xml文件
- (源码)基于Spring Boot 2的管理后台系统.zip
评论0