首页 > 解决方案 > 汇编语言问题理解跳转表

问题描述

你能纠正我阅读这个汇编代码吗?这是来自二进制炸弹实验室。第 29 行将输入与 2 进行比较,它必须相等,所以我知道 2 是答案的一部分。第 38 行从 eax 中减去 2,所以我知道第二个 input-2 <=0 func4:我认为它确实是 X *12 但然后比较是 rsp+0xc 这是 2 然后它失败

你能帮忙吗

   0x00000000004010e8 <+0>:     sub    rsp,0x18
   0x00000000004010ec <+4>:     lea    rcx,[rsp+0x8]
   0x00000000004010f1 <+9>:     lea    rdx,[rsp+0xc]
   0x00000000004010f6 <+14>:    mov    esi,0x402a2d
   0x00000000004010fb <+19>:    mov    eax,0x0
   0x0000000000401100 <+24>:    call   0x400cb0 <__isoc99_sscanf@plt>
   0x0000000000401105 <+29>:    cmp    eax,0x2
   0x0000000000401108 <+32>:    jne    0x401116 <phase_4+46>
   0x000000000040110a <+34>:    mov    eax,DWORD PTR [rsp+0x8]
   0x000000000040110e <+38>:    sub    eax,0x2
   0x0000000000401111 <+41>:    cmp    eax,0x2
   0x0000000000401114 <+44>:    jbe    0x40111b <phase_4+51>
   0x0000000000401116 <+46>:    call   0x40167d <explode_bomb>
   0x000000000040111b <+51>:    mov    esi,DWORD PTR [rsp+0x8]
   0x000000000040111f <+55>:    mov    edi,0x5
   0x0000000000401124 <+60>:    call   0x4010b0 <func4>
   0x0000000000401129 <+65>:    cmp    eax,DWORD PTR [rsp+0xc]
   0x000000000040112d <+69>:    je     0x401134 <phase_4+76>
   0x000000000040112f <+71>:    call   0x40167d <explode_bomb>
   0x0000000000401134 <+76>:    add    rsp,0x18
   0x0000000000401138 <+80>:    ret

 func4:
   0x00000000004010b0 <+0>:     push   r12
   0x00000000004010b2 <+2>:     push   rbp
   0x00000000004010b3 <+3>:     push   rbx
   0x00000000004010b4 <+4>:     mov    ebx,edi
   0x00000000004010b6 <+6>:     test   edi,edi
   0x00000000004010b8 <+8>:     jle    0x4010de <func4+46>
   0x00000000004010ba <+10>:    mov    ebp,esi
   0x00000000004010bc <+12>:    mov    eax,esi
   0x00000000004010be <+14>:    cmp    edi,0x1
   0x00000000004010c1 <+17>:    je     0x4010e3 <func4+51>
   0x00000000004010c3 <+19>:    lea    edi,[rdi-0x1]
   0x00000000004010c6 <+22>:    call   0x4010b0 <func4>
   0x00000000004010cb <+27>:    lea    r12d,[rax+rbp*1]
   0x00000000004010cf <+31>:    lea    edi,[rbx-0x2]
   0x00000000004010d2 <+34>:    mov    esi,ebp
   0x00000000004010d4 <+36>:    call   0x4010b0 <func4>
   0x00000000004010d9 <+41>:    add    eax,r12d
   0x00000000004010dc <+44>:    jmp    0x4010e3 <func4+51>
   0x00000000004010de <+46>:    mov    eax,0x0
   0x00000000004010e3 <+51>:    pop    rbx
   0x00000000004010e4 <+52>:    pop    rbp
   0x00000000004010e5 <+53>:    pop    r12
   0x00000000004010e7 <+55>:    ret

标签: assemblyx86-64reverse-engineering

解决方案


推荐阅读