计算机系统原理实验之BombLab二进制炸弹5、6关

本文详细介绍了BombLab实验的第五关和第六关,通过分析汇编代码和使用gdb调试,揭示了输入参数的规律。第五关的关键在于参数1的低四位不能为1111,参数2为数组值的累加。第六关涉及读取六个不等的整数,并根据特定顺序选取链表节点。实验提升了作者的汇编理解和gdb调试能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


实验目的:

通过二进制炸弹实验,熟悉汇编语言,反汇编工具objdump以及gdb调试工具。

实验内容:

1、炸弹实验第5关。

2、炸弹实验第6关。

实验过程:

第五关:

1、根据前几关的经验,进入bomb文件的gdb调试命令下,直接查看第五关的汇编代码。

 

2、直接回车可以显示余下的phase_5函数的代码,浏览完一遍phase_5函数的汇编代码后,并不能直接发现此代码的精髓所在,因此,我开始逐条分析phase_5函数的代码。

首先是栈帧准备,开辟32字节的空间:

 

接着加载%ebp-0x10处的有效地址间接存储到%esp+0xc处,也就是参数2存放的地方,同理,加载%ebp-0xc处的有效地址间接存储到%esp+0x8处,也就是参数1存放的地方。

 

接着看见了一串似曾相似的代码,老规矩,查看此地址处存放的数据,发现我们仍是输入两个整数。

 

接着把%ebp+0x8处存储的值传送给%esp,然后调用__isoc99_sscanf@plt函数。

 

3、往下接着看,比较了%eax1的大小,若%eax大于1,则跳转到<phase_5+51>处,否则,调用爆炸函数,引起爆炸,由此处可得,输入的参数个数必须大于1个。

 

4、接着把参数1传给%eax,并对%eax0xf作按位与运算,也就是取出参数1的低四位。

5、接着把取出来的参数1的低四位与

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值