计算机系统基础实验介绍 (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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- DirectX Overlay 的简单基础 .zip
- 1第一章Sympy介绍2(1).ipynb
- DirectX Math SIMD Pascal 数学库.zip
- 计算机网络第三章作业/
- DirectX API 的 Rust 包装器 .zip
- Spring Boot打造全方位家装服务管理平台:一站式解决方案的设计与实现
- 1. excel两张子表A列乱序对比-红色高亮显示不同之处 2. pdf转word 3. 合并多个pdf
- DirectX API 挂钩框架.zip
- DirectX 9 组件框架.zip
- 基于springboot+mybatis后台vue实现的音乐网站项目毕业设计源码+数据库(高分项目)
评论0