计算机系统 实验三(课程实验LAB三)

计算机系统 实验三

实验目的:

二进制炸弹是作为一个目标代码文件提供给学生们的程序,运行时,它提示用户输入6个不
同的字符串。如果其中任何一个不正确,炸弹就会“爆炸”:打印出一条错误信息。学生通过反汇 编和逆向工程来确定是哪六个字符串,从而解除他们各自炸弹的雷管。


一、Phase 1

代码
在这里插入图片描述
方法
由反汇编代码可知,第二行是将立即数mov到0x4(%esp),所以gdb调试x/s 0x804a1bc查看内容
在这里插入图片描述

二、Phase 2

在这里插入图片描述
首先我们可以知道的是输入6个数字,而且如果第一个数字不是1就会爆炸,所以第一个数字是1,之后会进入一个循环,自己与自己相加成为第二个数字,第二个数字是1+1=2,第三个数字是2+2=4,以此类推。所以答案是1 2 4 8 16 32
在这里插入图片描述

三、Phase 3

主要考查switch语句
在这里插入图片描述
从箭头标的地方可以知道,输入的第一个数字是0-5之间的数字,后边的汇编代码指的是switch语句,当第一个数字等于0~5中的一个数,就会输出相应的值。
在这里插入图片描述

四、Phase 4


8048cb9:	83 ec 2c             	sub    $0x2c,%esp
 8048cbc:	8d 44 24 1c          	lea    0x1c(%esp),%eax
 8048cc0:	89 44 24 0c          	mov    %eax,0xc(%esp)
 8048cc4:	8d 44 24 18          	lea    0x18(%esp),%eax
 8048cc8:	89 44 24 08          	mov    %eax,0x8(%esp)
 8048ccc:	c7 44 24 04 af a3 04 	movl   $0x804a3af,0x4(%esp)
 8048cd3:	08 
 8048cd4:	8b 44 24 30          	mov    0x30(%esp),%eax
 8048cd8:	89 04 24             	mov    %eax,(%esp)
 8048cdb:	e8 90 fb ff ff       	call   8048870 <__isoc99_sscanf@plt>
 8048ce0:	83 f8 02             	cmp    $0x2,%eax
 8048ce3:	75 0d                	jne    8048cf2 <phase_4+0x39>
 8048ce5:	8b 44 24 18          	mov    0x18(%esp),%eax
 8048ce9:	85 c0                	test   %eax,%eax
 8048ceb:	78 05                	js     8048cf2 <phase_4+0x39>
 8048ced:	83 f8 0e             	cmp    $0xe,%eax
 8048cf0:	7e 05                	jle    8048cf7 <phase_4+0x3e>
 8048cf2:	e8 0f 04 00 00       	call   8049106 <explode_bomb>
 8048cf7:	c7 44 24 08 0e 00 00 	movl   $0xe,0x8(%esp)
 8048cfe:	00 
 8048cff:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
 8048d06:	00 
 8048d07:	8b 44 24 18          	mov    0x18(%esp),%eax
 8048d0b:	89 04 24             	mov    %eax,(%esp)
 8048d0e:	e8 3d ff ff ff       	call   8048c50 <func4>
 8048d13:	83 f8 07             	cmp    $0x7,%eax
 8048d16:	75 07                	jne    8048d1f <phase_4+0x66>
 8048d18:	83 7c 24 1c 07       	cmpl   $0x7,0x1c(%esp)
 8048d1d:	74 05                	je     8048d24 <phase_4+0x6b>
 8048d1f:	e8 e2 03 00 00       	call   8049106 <explode_bomb>
 8048d24:	83 c4 2c             	add    $0x2c,%esp

1.这一关需要读入两个输入
2.第一个输入一定要小于等于15
3.第二个参数必须要等于7
在这里插入图片描述

五、Phase 5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、Phase 6

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们输入的6个数实际上就是不同的node节点数,根据我输入的节点号,把节点内的内容重新进行排序,排成递增序列。然后之后还有一个7-链表的值的运算
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值