Binary Bomb phase 4 first int

问题描述 投票:0回答:0

我目前无法计算出解决二进制炸弹第 4 阶段所需的第一个数字。我已经知道我需要两个整数 (%d %d) 并且我知道第二个整数是什么,但是我在使用第一个整数时遇到了麻烦。

这是第 4 阶段进入 func4 的部分。到目前为止,无论我为第一个 int 输入什么数字,我都会在 eax 中返回 352。如果我正确阅读代码,则需要将其与我认为是 1 的 0x8(%rsp) 进行比较。只需要在正确的方向上提供一点帮助!这与斐波那契数列有关吗?

   0x0000000000401577 <+60>:    call   0x401504 <func4>
   0x000000000040157c <+65>:    cmp    %eax,0x8(%rsp)
   0x0000000000401580 <+69>:    jne    0x401587 <phase_4+76>
   0x0000000000401582 <+71>:    add    $0x18,%rsp
   0x0000000000401586 <+75>:    ret    
   0x0000000000401587 <+76>:    call   0x401a28 <explode_bomb>
   0x000000000040158c <+81>:    jmp    0x401582 <phase_4+71>

这是递归函数func4:

Dump of assembler code for function func4:
=> 0x0000000000401504 <+0>:     mov    $0x0,%eax
   0x0000000000401509 <+5>:     test   %edi,%edi
   0x000000000040150b <+7>:     jle    0x40153a <func4+54>
   0x000000000040150d <+9>:     push   %r12
   0x000000000040150f <+11>:    push   %rbp
   0x0000000000401510 <+12>:    push   %rbx
   0x0000000000401511 <+13>:    mov    %edi,%ebx
   0x0000000000401513 <+15>:    mov    %esi,%ebp
   0x0000000000401515 <+17>:    mov    %esi,%eax
   0x0000000000401517 <+19>:    cmp    $0x1,%edi
   0x000000000040151a <+22>:    je     0x401535 <func4+49>
   0x000000000040151c <+24>:    lea    -0x1(%rdi),%edi
   0x000000000040151f <+27>:    call   0x401504 <func4>
   0x0000000000401524 <+32>:    lea    (%rax,%rbp,1),%r12d
   0x0000000000401528 <+36>:    lea    -0x2(%rbx),%edi
   0x000000000040152b <+39>:    mov    %ebp,%esi
   0x000000000040152d <+41>:    call   0x401504 <func4>
   0x0000000000401532 <+46>:    add    %r12d,%eax
   0x0000000000401535 <+49>:    pop    %rbx
   0x0000000000401536 <+50>:    pop    %rbp
   0x0000000000401537 <+51>:    pop    %r12
   0x0000000000401539 <+53>:    ret    
recursion assembly gdb x86-64 binary-bomb
© www.soinside.com 2019 - 2024. All rights reserved.