实验3 逆向工程实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深圳大学实验报告课程名称:计算机系统(2)
实验项目名称:逆向工程实验
学院:
专业:
指导教师:罗秋明
报告人:学号:班级:
实验时间:2017年4月14日
实验报告提交时间:2017年5月8日
教务处制
一、实验目标:
熟悉Linux中C程序编译成可执行目标文件的过程,包括以下内容:
1. 了解Linux编译系统四个阶段(预处理器、编译器、汇编器和链接器);用编译工具vi/vim的编写程序,并用gcc上实现这四个选项;观察并说明他们的区别和不同;最后对*.o文件进行反汇编
4.完成bomb实验。
二、实验环境:
1.计算机(Intel CPU)
2.Fedora 13 Linux操作系统
3.gcc、vi/vim
4.gdb
三、实验内容与步骤
1.1根据实验一:在已创建用户的用户下面进行操作(用户名为学生名称加学号,
如赖丹辉,学号2013150040,则该用户名为Laidanhui_2013150040)。在vi/vim 里面编写code.c文件,如有警告信息,请修改代码至无警告信息。
1.2预编译器:会对各种预处理指令(#include #define #ifdef 等#开始的代码行)进行
处理,删除注释和多余的空白字符,生成一份新的代码(5分)
[root@wahoo test]#gcc -E code.c -o code.i
E 参数通知gcc对目标文件进行预编译,这里是对文件code.c文件
o 参数是对命令输出结果进行导入操作,这里是把 gcc -E code.c 操作结果输出到文件code.i(命名要自定义)中进行保存
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
1.3编译器:对代码进行语法、语义分析和错误判断,生成汇编代码文件(5分)[root@wahoo test]#gcc -S code.i -o code.s
S 参数通知gcc对目标文件进行编译,这里是对文件code.i文件,通过vi打开。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
1.4汇编器:把汇编代码转换与计算机可认识的二进制文件(5分)
[root@wahoo test]#gcc -c code.s -o code.o
c 参数通知gcc对目标文件执行指令转换操作
此步骤我们得到文件code.o
大家也同样打开文件查看一下,这个文件里面几乎没几个字符大家能看懂,这就对了,但大家可以通过这种方法将其转化为我们可读的形式:
[root@wahoo test]#readelf -a code.o
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
等
1.5链接器:就是把多个*.o文件合并成一个可执行文件,二进制指令文件(5分)[root@wahoo test]#gcc code.o -o code
这里我们就得到了一个可以直接在系统下执行的文件code
再用readelf语句打开。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
等
1.6分析步骤4和步骤5生成文件的区别,并进行阐述(5分)
1.7反汇编器并显示:要查看目标代码文件的内容,最有价值的就是使用反汇编
器,在Linux中我们常用objdump语句进行反汇编(5分)
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
[root@wahoo test]#objdump -d code
等
显示结果
2
、本实验是解除二进制炸弹。给你一个二进制可执行文件,运行该文件,你需
要在没有任何提示的情况下输入6个password ,如果都输入正确,则炸弹被解除(完成了实验);如果输入错误,则炸弹爆炸(当然不是真爆炸了,需要重做)。从计算机的角度来描述,就是通过二进制文件分析这个程序作了些什么。由于我们有反汇编工具,也可以说是通过汇编程序,分析这个程序作了什么。本实验的目的是理解汇编语言和掌握调试工具gdb 。
具体来说,本实验给出一个二进制可执行文件bomb 。运行./bomb ,被要求输入password ,我随意输入“abc ”,当然不正确。提示我已经失败了,退出程序。
当我输入正确的时,就可以通关:
本实验要求解决Phase_1(15分)、Phase_2(10分)、Phase_3(10分)、Phase_4(10分)、Phase_5(10分)。通过截图把结果写在实验报告上。
四、实验结果
第一部分:
1.2
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
1.3
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
1.4
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
1.5
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。