计算机系统基础实验:拆解Binary Bombs
需积分: 0 7 浏览量
更新于2024-07-01
收藏 1.9MB PDF 举报
"19020011038-岳宇轩-lab21"
这是一份关于计算机系统基础实验的报告,由岳宇轩同学完成,实验主题为"Lab2BinaryBombs",旨在提升对程序机器级表示、汇编语言、调试器和逆向工程的理解,以及熟悉Linux基本操作命令和程序开发环境。实验中,学生需通过GDB调试器逐步分析一个名为"Binary Bombs"的程序,该程序在每个阶段要求输入特定字符串,正确则进入下一阶段,错误则程序“爆炸”。
实验内容包括六个阶段,涉及不同的编程概念和技术:
1. 字符串比较:学生需要理解如何通过汇编代码分析字符串匹配的过程,找出正确答案。例如,在第一阶段,学生通过观察指令`d49`和`d48`确定了输入值和目标字符串的位置,并找到了匹配字符串:"Therearerumorsontheinternets."
2. 循环:第二阶段涉及到读取六个数字并进行比较。通过分析`read_six_number`函数,学生发现程序检查这些数字是否满足特定条件。如果第一个数字为负数,程序会触发“爆炸”。
3. 条件/分支(含switch语句):在这个阶段,学生可能遇到了基于条件判断的汇编代码,例如使用`js`指令根据标志位决定执行路径。
4. 递归调用和栈:阶段四可能涉及递归函数调用,学生需要理解栈帧和返回地址的概念,以及如何通过调试器追踪递归过程。
5. 指针:第五阶段可能涉及到指针的使用,如通过指针访问和修改内存中的数据。
6. 链表/指针/结构:在最后一个阶段,学生可能遇到了链表结构,需要理解链表节点的指针操作和遍历。
实验要求学生不仅要熟练掌握GDB的基本操作,例如设置断点、单步执行、查看寄存器状态等,还要能使用`objdump`等工具来分析二进制文件。此外,学生需要能够理解和推断出程序预期的输入,以成功解除所有阶段的“炸弹”。
通过这样的实验,学生能够深化对底层计算机系统运作的理解,提高逆向工程和调试技能,这些都是软件开发和安全分析的重要基础。
2022-08-03 上传
2022-08-03 上传
2022-08-03 上传
2022-08-08 上传
2022-08-03 上传
2022-08-03 上传
2022-08-03 上传
2022-08-08 上传
BellWang
- 粉丝: 28
- 资源: 315
最新资源
- 深入了解Django框架:Python中的网站开发利器
- Spring Boot集成框架示例:深入理解与实践
- 52pojie.cn捷速OCR文字识别工具实用评测
- Unity实现动态水体涟漪效果教程
- Vue.js项目实践:饭否每日精选日历Web版开发记
- Bootbox:用Bootstrap实现JavaScript对话框新体验
- AlarStudios:Swift开发教程及资源分享
- 《火影忍者》主题新标签页壁纸:每日更新与自定义天气
- 海康视频H5player简易演示教程
- -roll20脚本开发指南:探索roll20-master包-
- Xfce ClassicLooks复古主题更新,统一Linux/FreeBSD外观
- 自建物理引擎学习刚体动力学模拟
- Python小波变换工具包pywt的使用与实例
- 批发网导航程序:自定义模板与分类标签
- 创建交互式钢琴键效果的JavaScript库
- AndroidSunat应用开发技术栈及推介会议