计算机系统基础课程实验课bomb--phase_2

对于phase_2还是首先看phase_2的反汇编代码
首先将两个寄存器压入栈在这里插入图片描述

然后栈顶减去40个字节,把栈指针,应该是一个地址放入第二参数并调用read_six_numbers,使得该地址访问的内存赋值
对于该函数的输入形式暂不做讨论,继续看反汇编代码

然后将1和%rsp中地址指向内存中的值比较大小,可以看出数据类型应该为int,因为后缀为cmpl的l,如果该值等于1就跳转到400f30,否则结束,所以可以看出该值就为1在这里插入图片描述
从400f30继续看,分别将%rsp+4和%rsp+24的地址放入了%rbx和%rbp,可以看出,加上前面的1的地址为%rsp,地址一共占了24个字节,再加上数据类型为int,4个字节,就知道为6个连续的数字存储在栈中在这里插入图片描述
然后是一次无条件的跳转到400f17,将(%rbx-4)放入%eax,再将%eax乘2,比较%eax和%rbx地址指向内存中的值,如果相等就跳转,不相等就爆炸,一直下去,目标都是将%eax×2在这里插入图片描述

再回到read_six_number
通过读取0x4025c3中的值
得到输入形式为在这里插入图片描述
所以答案为从1开始乘2五次
1 2 4 8 16 32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值