上传者: 35823099
|
上传时间: 2025-12-27 17:25:59
|
文件大小: 1.7MB
|
文件类型: DOCX
【实验三】是深圳大学计算机科学与技术专业的一次逆向工程实验,旨在让学生理解程序的运行机制,掌握GDB调试工具和objdump反汇编工具的使用。实验设计了一个名为“二进制炸弹”的游戏,包含六个关卡,每个关卡都需要通过输入正确的字符串或数字来避免程序“爆炸”。实验的环境是在Intel CPU的Linux 64位系统(Ubuntu 17)上,使用GDB和objdump进行调试和反汇编。
实验过程中,学生需要分析汇编代码,找出引导程序跳转到“explode_bomb”部分的条件,从而找出正确的通关输入。实验的具体步骤如下:
1. **第一关**:
- 学生通过反汇编找到phase_1的相关代码,发现字符串相等时可以避免“爆炸”,关键在于0x401af8地址的值。
- 使用GDB查看内存地址,找到该常量对应的字符串,答案是"Science isn't about why, it's about why not?"。
2. **第二关**:
- 分析phase_2的汇编代码,发现程序读取6个元素并进行3次比较,如果当前元素不等于下一个元素则“爆炸”,同时计算累加器r12的值,如果为0则触发“爆炸”。
- 通关条件是满足数组的连续元素相等,且累加器不为0,例如输入"a[0]=a[3], a[1]=a[4], a[2]=a[5], a[0]+a[1]+a[2] != 0"。
3. **第三关**:
- 学生发现需要输入两个数字,如果第一个数字大于7则触发“爆炸”。
- 关键在于正确解析输入并确保第一个数字不超过7。
实验要求学生对汇编语言有基础了解,能熟练使用GDB进行断点设置、单步执行、变量查看等调试操作,以及通过objdump工具反汇编二进制文件,理解程序的控制流程。学生需要将实验过程截图并配合文字说明,形成实验报告,并在实验结束后10日内提交,由教师进行批改。
实验结束后,学生应总结实验心得,包括但不限于以下几个方面:
- 对程序控制流程的理解深化
- GDB和objdump的实际应用技巧
- 解决问题的逻辑思维和分析能力的提升
- 对逆向工程和安全编程的新认识
通过这个实验,学生不仅能巩固计算机系统的基础知识,还能提高实际问题解决能力和动手能力,为将来深入学习计算机系统和安全领域打下坚实基础。