计算机系统基础实验介绍 (lab2) - 20191

preview
需积分: 0 15 下载量 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
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜