Binary Bombs实验:拆解汇编与逆向工程

需积分: 0 12 下载量 150 浏览量 更新于2024-07-01 1 收藏 1.11MB PDF 举报
"计算机系统基础实验,Lab2BinaryBombs,20191,Linux,链表,汇编,调试,逆向工程" 在此次名为"计算机系统基础实验"的Lab2中,学生们将面临一个名为"Binary Bombs"的挑战,这是一个针对Linux系统的C语言编程实践。实验的目标是通过学习和应用机器级表示、汇编语言、调试器和逆向工程的原理与技巧,来拆除一个包含六个阶段的"二进制炸弹"程序。每个阶段都设计有不同的难题,难度逐渐升级,旨在检验和提升学生在不同计算机科学领域的知识。 首先,"Binary Bombs"程序由六个阶段组成,每个阶段都需要输入特定的字符串来解除。阶段1涉及到字符串比较,阶段2测试循环机制,阶段3涵盖条件/分支(如switch语句),阶段4涉及递归调用和栈操作,阶段5关注指针运用,而阶段6则引入了链表、指针和结构体的概念。此外,还有一个隐藏的第七阶段,它会在第四阶段成功后,通过特定的字符串触发。 为了成功拆除这些炸弹,学生需要使用gdb调试器和objdump工具对程序进行反汇编,以理解其机器代码。他们需要单步调试每个阶段,分析汇编语言代码的行为,推断出正确的输入字符串。在这个过程中,设置断点在阶段开始和可能引发"BOOM!!!"输出的函数之前,是非常关键的调试策略。 实验的环境是Linux操作系统,所有学生将从群组下载包含各自学号的实验包,每个包中包含一个特定的二进制可执行文件"bomb"、源代码文件"bomb.c"以及README等辅助文件。"bomb"程序本身接受0或1个参数,如果没有提供参数,它会打印欢迎信息并等待用户逐阶段输入解除炸弹的字符串。 这个实验不仅锻炼了学生的编程技能,还强调了对底层系统操作的理解,包括汇编语言、调试和逆向工程,这些都是计算机科学中不可或缺的基础知识。通过这样的实践,学生将能够更深入地了解程序如何在计算机内部运行,从而提升他们的技术能力。