为了账号安全,请及时绑定邮箱和手机立即绑定

炸弹实验室phase_4

炸弹实验室phase_4

倚天杖 2020-02-02 15:09:13
Dump of assembler code for function func4    <+0>: mov %rbx,-0x18(%rsp)    <+5>: mov %rbp, -0x10(%rsp)    <+10>: mov %r12,-0x8(%rsp)    <+15>: sub $0x18,%rsp    <+19>: mov %edi,%ebx    <+21>: mov %esi,%ebp    <+23>: test %edi, %edi    <+25>: jg 0x400fb2<func4+34>    <+27>: mov $0x0,%ebp    <+32>: jmp 0x400fd2<func4+66>    <+34> cmp $0x1, %edi    <+37>: je 0x400fd2<func4+66>    <+39>: lea -0x1(%rbx),%edi    <+42>: callq 0x400f90 <func4>    <+47>: mov %eax,%r12d    <+50>: lea -0x2(%rbx),%edi    <+53>: mov %ebp,%esi    <+55>: callq 0x400f90 <func4>    <+60>: lea (%r12,%rax,1),%eax    <+64>: add %eax,ebp    <+66>: mov %ebp, %eax    <+68>: mov (%rsp),%rbx    <+72>: mov 0x8(%rsp), %rbp    <+77>: mov 0x10(%rsp),%r12    <+82>: add $0x18,%rsp    <+86>: retq这是func4的反汇编代码。而且我不确定我是否正确理解此功能。我没有在这里编写phase_4的反汇编代码,但是它需要“%d%d”输入,并且第一个整数应该在1 <= x <4的范围内。因此它应该是1,2或3。寄存器%edi首先具有值7。调用func4之后,代码将0x10(%rsp)和%eax的值进行比较,因此我应该知道调用func4之后的%eax值。我以为,反汇编的func4代码意味着put the stackebx = ediebp = esiif edi is not zero    if edi is one: then eax=ebp.                   rearrange the stack                   return.    else: edi = -0x1(rbx)          func4          r12d = eax          edi = -0x2(rbx)          esi = ebp          func4          eax = rax+r12+ebp          rearrange the stack and return.else    ebp=0    eax=ebp    return但是据我了解,我无法解决。例如,如果%rsp的原始地址为0x7fffffffd5a8,则该地址将变小,直到edi的值变为0。我发现0x7fffffffd56f的值为0-并且第一个func4调用结束-但之后的值为0x7fffffffd56e为也为0-因此第二个func4调用结束-并且所有寄存器都变为0,包括eax。所以我认为第二个数字的答案是零,但是(1,0),(2,0),(3,0)总是爆炸。你猜我在哪里错了,能帮上忙吗?
查看完整描述

3 回答

?
qq_慕圣0414050

TA贡献1条经验 获得超0个赞

我也是像上面那样理解的,可就是不对。请问最后解出来了吗?
查看完整回答
反对 回复 2021-04-24
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

在phase_4的反汇编代码中,esi设置为0x14(%rsp),这是phase_4的第二个输入,而edi设置为7。根据您的解释,func4(edi,esi)返回func4(edi-1,esi) )+ func4(edi-2,esi)+ esi。因此func4(7,esi)返回33 * esi。和phase_4比较0x10(%rsp)和eax。因此,phase_4的第一输入应为33 *(phase_4的第二输入)。我理解正确吗?

查看完整回答
反对 回复 2020-02-02
  • 3 回答
  • 0 关注
  • 838 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信