CSAPP课程实验 bomb实验 拆炸弹实验(1)
2015-05-19 20:26
323 查看
由于内容较长,所以打算分成几个部分来写。
实验准备知识:
实验三是CSAPP课程中的bomb炸弹实验。一个非常有意思的实验。实验主要提供了2个文件,一个bomb二进制可执行文件,一个bomb.c C源文件。实验主要设置6个关卡phase,要求你每一关输入一个特定的字符串,来拆掉炸弹。主要是考察对汇编语言的熟悉理解程度,反汇编和逆向工程以及gdb调试。感觉datalab主要是对应教材的第二章信息的表示预处理章节,而bomb实验主要是对应教材的第三章,程序的机器级表示章节,对寄存器,主存的理解,对汇编指令的理解,控制循环跳转switch语句的考察,以及过程,过程中的栈的调用过程以及递归过程等,对数组指针以及链表等数据结构的理解等的考察。
由于炸弹拆除过程比较繁琐,所涉及的知识点比较多,下面按照拆除过关的顺序来写。
首先,之前做过一次,我首先将之前的加压后的实验3文件夹删掉
首先将windows下的实验3.zip拖到linux下,之前先安装vmtools,可以实现windows和linux下文件的复制黏贴,这里压缩文件采用zip格式,是方便linux下对其进行解压。
解压:unzip 实验3.zip
解压后看到实验3中的内容是LAB3,然后在进入LAB3中看看lab3中具体有些什么内容。
进入lab3以后发现里面有如图所示的几个文件,然后用ll查看一下详细信息,权限之类的,发现bomb是一个不可执行的文件,然后在利用命令:chmod xxx filename 来修改一下文件的权限。在此处我用的是chmod 777 bomb 。777是将文件的权限全部修改为可读可写可执行。修改完以后在进行一下ll查看一下,rwx,bomb已经可以执行了。
拆炸弹的第一步就是要将bomb文件进行一下逆向反汇编。反汇编有两种,一种是利用objdump将bomb文件中的全部进行反汇编,利用的命令有:
objdump -d bomb>1.txt
objdump –d bomb>bomb.s
上面两个命令都是将bomb全部反汇编,只是反汇编之后生成的文件的格式不同,一个是1.txt一个是bomb.s汇编代码格式。通过查看这两个生成的文件可以发现,两者的内容是一样的。
将生成的1.txt或者bomb.s复制到windows下面用notepad++打开,选择语言为汇编语言,则带有颜色区别,也可以进行搜索查询,比较方便
反汇编另外一种则是在gdb下,利用disassemble命令,可简写为disass
disass func(函数名) 将该函数对应的汇编代码反汇编出来
disass 起始地址 结束地址 指定反汇编的代码的地址段
一般配合info line func(函数名)查看函数的起始地址一起来使用。
首先进入gdb调试下
比如在gdb下反汇编关卡1phase_1函数
当然在linux下面也可以用gedit打开,也可以搜索也可以。
然后接下来就是主要查看汇编代码,找到炸弹爆破的突破口将炸弹拆除了。
首先是要对gdb调试命令有一定的了解:
run 简写r 代表运行
kill 简写k 代表结束
c 代表继续运行
q 退出gdb调试模式
si 进行单步调试
s 不单步把这个函数执行完
设置断点:b *addr 在某一个地址处设置断点
b func(函数名)在某个函数的开始设置断点
还有在一个函数的某个地址处设置断点等。
删除断点:delete 删除全部已经设置的断点
delete 1 删除1这个断点
delete 1-3 删除1-3这几个断点
输出查看内容:gdb调试下,examine命令用于显示内存内容,常用的命令为:
x/<n/f/u> n代表从起始地址开始显示几个地址
f代表显示的格式,比如s为以字符串的格式,x代表以十六进制显示
u代表显示几个字节,一般缺省代表4字节
举例:x/3xw从起始地址处每次显示3个地址,每个以16进制显示,每个4字节
gdb下面的p代表的是print
p/x 以十六进制显示
p/d 以十进制显示
p/t 以二进制显示
p/s 以字符串格式显示
p $eax 查看寄存器eax中的内容
p/x (char *)
p/x *(int *)
还需要一些看懂和理解汇编基本指令。比如:
Je 相等时跳转
Jg 大于时跳转
Jl 小于时跳转
Ja 无符号数大于时跳转
eax 常用于保存返回值
ecx 常用于计数
edi 目的变址
ebx 基址
esi 源变址
实验准备知识:
实验三是CSAPP课程中的bomb炸弹实验。一个非常有意思的实验。实验主要提供了2个文件,一个bomb二进制可执行文件,一个bomb.c C源文件。实验主要设置6个关卡phase,要求你每一关输入一个特定的字符串,来拆掉炸弹。主要是考察对汇编语言的熟悉理解程度,反汇编和逆向工程以及gdb调试。感觉datalab主要是对应教材的第二章信息的表示预处理章节,而bomb实验主要是对应教材的第三章,程序的机器级表示章节,对寄存器,主存的理解,对汇编指令的理解,控制循环跳转switch语句的考察,以及过程,过程中的栈的调用过程以及递归过程等,对数组指针以及链表等数据结构的理解等的考察。
由于炸弹拆除过程比较繁琐,所涉及的知识点比较多,下面按照拆除过关的顺序来写。
首先,之前做过一次,我首先将之前的加压后的实验3文件夹删掉
首先将windows下的实验3.zip拖到linux下,之前先安装vmtools,可以实现windows和linux下文件的复制黏贴,这里压缩文件采用zip格式,是方便linux下对其进行解压。
解压:unzip 实验3.zip
解压后看到实验3中的内容是LAB3,然后在进入LAB3中看看lab3中具体有些什么内容。
进入lab3以后发现里面有如图所示的几个文件,然后用ll查看一下详细信息,权限之类的,发现bomb是一个不可执行的文件,然后在利用命令:chmod xxx filename 来修改一下文件的权限。在此处我用的是chmod 777 bomb 。777是将文件的权限全部修改为可读可写可执行。修改完以后在进行一下ll查看一下,rwx,bomb已经可以执行了。
拆炸弹的第一步就是要将bomb文件进行一下逆向反汇编。反汇编有两种,一种是利用objdump将bomb文件中的全部进行反汇编,利用的命令有:
objdump -d bomb>1.txt
objdump –d bomb>bomb.s
上面两个命令都是将bomb全部反汇编,只是反汇编之后生成的文件的格式不同,一个是1.txt一个是bomb.s汇编代码格式。通过查看这两个生成的文件可以发现,两者的内容是一样的。
将生成的1.txt或者bomb.s复制到windows下面用notepad++打开,选择语言为汇编语言,则带有颜色区别,也可以进行搜索查询,比较方便
反汇编另外一种则是在gdb下,利用disassemble命令,可简写为disass
disass func(函数名) 将该函数对应的汇编代码反汇编出来
disass 起始地址 结束地址 指定反汇编的代码的地址段
一般配合info line func(函数名)查看函数的起始地址一起来使用。
首先进入gdb调试下
比如在gdb下反汇编关卡1phase_1函数
当然在linux下面也可以用gedit打开,也可以搜索也可以。
然后接下来就是主要查看汇编代码,找到炸弹爆破的突破口将炸弹拆除了。
首先是要对gdb调试命令有一定的了解:
run 简写r 代表运行
kill 简写k 代表结束
c 代表继续运行
q 退出gdb调试模式
si 进行单步调试
s 不单步把这个函数执行完
设置断点:b *addr 在某一个地址处设置断点
b func(函数名)在某个函数的开始设置断点
还有在一个函数的某个地址处设置断点等。
删除断点:delete 删除全部已经设置的断点
delete 1 删除1这个断点
delete 1-3 删除1-3这几个断点
输出查看内容:gdb调试下,examine命令用于显示内存内容,常用的命令为:
x/<n/f/u> n代表从起始地址开始显示几个地址
f代表显示的格式,比如s为以字符串的格式,x代表以十六进制显示
u代表显示几个字节,一般缺省代表4字节
举例:x/3xw从起始地址处每次显示3个地址,每个以16进制显示,每个4字节
gdb下面的p代表的是print
p/x 以十六进制显示
p/d 以十进制显示
p/t 以二进制显示
p/s 以字符串格式显示
p $eax 查看寄存器eax中的内容
p/x (char *)
p/x *(int *)
还需要一些看懂和理解汇编基本指令。比如:
Je 相等时跳转
Jg 大于时跳转
Jl 小于时跳转
Ja 无符号数大于时跳转
eax 常用于保存返回值
ecx 常用于计数
edi 目的变址
ebx 基址
esi 源变址
相关文章推荐
- 深入理解计算机系统(CSAPP)课程实验bomb程序炸弹实验日志(phase_3)
- 深入理解计算机系统(CSAPP)课程实验bomb程序炸弹实验日志(phase_6)
- 深入理解计算机系统(CSAPP)课程实验bomb程序炸弹实验日志(phase_2)
- CSAPP课程实验 bomb实验 拆炸弹实验 (2)
- 深入理解计算机系统(CSAPP)课程实验bomb程序炸弹实验日志(phase_5)
- 深入理解计算机系统(CSAPP)课程实验bomb程序炸弹实验日志(phase_1)
- CSAPP 深入理解计算机系统课程实验 bomb实验 反向编译 汇编(4)
- csapp bomb lab:csapp lab2 炸弹实验
- CSAPP第二次实验 bomb二进制炸弹的破解
- CSAPP深入理解操作系统 课程实验 bomb 反向编译 汇编(3)
- CSAPP:二进制炸弹实验
- 【CSAPP】二进制炸弹 实验分析
- 二进制炸弹实验binarybomb 拆弹
- CSAPP实验四----缓冲区溢出实验bufbomb
- CSAPP课程与实验
- [CSAPP]Bufbomb实验报告
- CSAPP lab binary bomb 二进制炸弹
- 逆向工程实验---二进制炸弹(CSAPP Project)
- [CSAPP]Bufbomb实验报告
- CSAPP实验之BUFBOMB