计算机系统实验报告
实验报告
实 验(三)
题 目 Binary Bomb
二进制炸弹
专 业 计算学部
学 号 190110812
班 级 7
学 生 刘新晨
指 导 教 师 吴锐
实 验 地 点 G707
实 验 日 期 2021.4.12
计算机科学与技术学院
计算机系统实验报告
目 录
第 1 章 实验基本信息 … - 3 -
1.1 实验目的… - 3 -
1.2 实验环境与工具… - 3 -
1.2.1 硬件环境 … 错误!未定义书签。
1.2.2 软件环境 … 错误!未定义书签。
1.2.3 开发工具 … 错误!未定义书签。
1.3 实验预习… 错误!未定义书签。
第 2 章 实验环境建立 … - 4 -
2.1 UBUNTU 下 CODEBLOCKS 反汇编(10 分) … - 4 -
2.2 UBUNTU 下 EDB 运行环境建立(10 分)… - 4 -
第 3 章 各阶段炸弹破解与分析 … - 6 -
3.1 阶段 1 的破解与分析… - 6 -
3.2 阶段 2 的破解与分析… - 7 -
3.3 阶段 3 的破解与分析… - 9 -
3.4 阶段 4 的破解与分析… - 9 -
3.5 阶段 5 的破解与分析… - 9 -
3.6 阶段 6 的破解与分析… - 9 -
3.7 阶段 7 的破解与分析(隐藏阶段)… - 9 -
第 4 章 总结 … - 10 -
4.1 请总结本次实验的收获… - 10 -
4.2 请给出对本次实验内容的建议… - 10 -
参考文献 … - 11 -
计算机系统实验报告
第 1 章 实验基本信息
1.1 实验目的
熟练掌握计算机系统的 ISA 指令系统与寻址方式
熟练掌握 Linux 下调试器的反汇编调试跟踪分析机器语言的方法
增强对程序机器级表示、汇编语言、调试器和逆向工程等的理解
1.2 实验环境与工具
1.2.1 硬件环境
X64 CPU;8G RAM;2.60GHz;
1.2.2 软件环境
Win10 64 位以上;VMware 15.5.7; Ubuntu 64 位
1.2.3 开发工具
Visual Studio 2019 64 位以上;CodeBlocks 64 位;vi; vim; gcc
计算机系统实验报告
2.1 Ubuntu 下 CodeBlocks 反汇编(10 分)
CodeBlocks 运行 hellolinux.c。反汇编查看 printf 函数的实现。
要求:C、ASM、内存(显示 hello 等内容)、堆栈(call printf 前)、寄存器
同时在一个窗口。
图 2-1 Ubuntu 下 CodeBlocks 反汇编截图
2.2 Ubuntu 下 EDB 运行环境建立(10 分)
用 EDB 调试 hellolinux.c 的执行文件,截图,要求同 2.1
计算机系统实验报告
- 5 -
图 2-2 Ubuntu 下 EDB 截图
计算机系统实验报告
- 6 -
第 3 章 各阶段炸弹破解与分析
每阶段 15 分(密码 10 分,分析 5 分),总分不超过 80 分
3.1 阶段 1 的破解与分析
密码如下:There are rumors on the internets.
破解过程:
首先使用 objdump -d bomb > bomb.txt 获得 bomb 程序的反汇编结果并保存
于文本文件 bomb.txt 中供分析
打开后发现 phase1 中使用 strings_not_equal 判断输入的字符串和%rsi 中的
字符串是否相等,如果相等则令%eax 为 0,否则为 1。
计算机系统实验报告
- 7 -
read_line 将用户输入的字符串的返回值转移给%rdi,并且在 phase_1 中与
0x403150 中储存的密码相比较,所以只需找到 0x403150 中储存的密码即可
查看地址 0x403150 中的内容得到密码为 There are rumors on the internets.
3.2 阶段 2 的破解与分析
密码如下:1 2 4 8 16 32
计算机系统实验报告
- 8 -
破解过程:
分析 phase_2 得,由函数 read_six_numbers 可猜测会输入六个 int 型的数值。
首先 cmpl $0x0,-0x30(%rbp)即比较 0 和-0x30(%rbp)且小于 0 时爆炸,故第一
个数必须大于等于 0
%ebx 的初始值为 1,然后判断其是否小于等于 5,并将此条件作为循环条件,每次
循环一次,%ebx 都加 1,到%ebx=5 时跳出循环。
计算机系统实验报告
- 9 -
检验后一个数是否为前一个数的两倍,最终得到答案 1 2 4 8 16 32
3.3 阶段 3 的破解与分析
密码如下:
破解过程:
首先查看 0x40319e 来判断输入类型
得出结论,该阶段要输入%d %c %d 的数据类型
3.4 阶段 4 的破解与分析
密码如下:
破解过程:
3.5 阶段 5 的破解与分析
密码如下:
破解过程:
3.6 阶段 6 的破解与分析
密码如下:
破解过程:
3.7 阶段 7 的破解与分析(隐藏阶段)
密码如下:
破解过程:
计算机系统实验报告
- 10 -
第 4 章 总结
4.1 请总结本次实验的收获
1.学会了 gdb 的调节和各种命令。
2.对 C 语言下字符串比较、循环、分支(含 switch)、函数调用、递归、指针、
结构、链表等有了更深刻的理解。
3.更加深刻地理解了汇编语言,程序机器级表示以及逆向工程。
4.2 请给出对本次实验内容的建议
希望对 gdb 调试的讲解更加细致一些。
注:本章为酌情加分项。
计算机系统实验报告
参考文献
为完成本次实验你翻阅的书籍与网站等
[1] 林来兴. 空间控制技术[M]. 北京:中国宇航出版社,1992:25-42.
[2] 辛希孟. 信息技术与信息服务国际研讨会论文集:A 集[C]. 北京:中国科学
出版社,1999.
[3] 赵耀东. 新时代的工业工程师[M/OL]. 台北:天下文化出版社,1998
[1998-09-26]. http://www.ie.nthu.edu.tw/info/ie.newie.htm(Big5).
[4] 谌颖. 空间交会控制理论与方法研究[D]. 哈尔滨:哈尔滨工业大学,1992:
8-13.
[5] KANAMORI H. Shaking Without Quaking[J]. Science,1998,279(5359):
2063-2064.
[6] CHRISTINE M. Plant Physiology: Plant Biology in the Genome Era[J/OL].
Science,1998,281:331-332[1998-09-23]. http://www.sciencemag.org/cgi/
collection/anatmorp.