深圳大学逆向工程实验报告——拆解二进制炸弹游戏

需积分: 0 0 下载量 100 浏览量 更新于2024-08-04 收藏 1.7MB DOCX 举报
"深圳大学计算机系统实验报告 - 逆向工程实验" 本次实验是关于逆向工程的实践,旨在让学生理解程序的运行机制,包括控制语句、函数、返回值以及堆栈结构,并掌握如何使用GDB调试工具和objdump反汇编工具。实验中,学生需要解决一个名为“二进制炸弹”的游戏,该游戏包含六个关卡,每个关卡都需要通过输入正确的字符串或数字来避免程序触发错误并降低评分。 实验环境设定在装有Ubuntu 17 64位操作系统的Intel CPU计算机上,配备GDB调试器和objdump反汇编工具。实验的主要任务是分析二进制文件`bomb_64`和其主函数源代码`bomb_64.c`,而不提供每个关卡的具体源代码。学生需要通过对汇编代码的分析,找出每个阶段中触发程序跳转至“explode_bomb”部分的条件,以此找出正确通关的答案。 在实验过程中,学生首先需要对第一关(Phase_1)进行分析。从反汇编的代码中可以发现,程序使用`je`指令判断两个字符串是否相等,如果相等则跳过爆炸。通过观察代码,学生推测关键在于0x401af8地址的字符串,通过GDB查看该内存地址的字符串,找到了通关答案:“Scienceisn'taboutwhy,it'saboutwhynot?”。 第二关(Phase_2)涉及到读取六个元素并进行循环判断。学生需要分析循环的跳出条件,即r13和r14寄存器的比较,找出正确的输入序列来满足这一条件。后续的第三关至第六关,学生需要采用类似的方法,逐步解析汇编代码,理解程序逻辑,找出通关的条件。 实验报告要求学生通过截图和文字记录实验过程,并对每个阶段进行详细分析。最后,学生需撰写实验结论和心得体会,这部分将占15分,旨在检验学生对实验内容的理解和反思。 这个实验是一个综合性的逆向工程练习,不仅要求学生具备基本的编程和调试技能,还需要他们能够理解和解释汇编代码,同时锻炼他们的逻辑推理和问题解决能力。通过这样的实践,学生能更深入地理解计算机系统的底层运作,提高他们在实际安全分析和软件调试中的能力。