二进制炸弹阶段 2 检索值以 0xc (%EBX) 为单位



我正在研究二进制炸弹,并试图弄清楚如何在 cmp 语句中比较值,我的理解是 eax 是我输入的,0xc(%ebx) 是第一个/第二个/等的答案应该是什么。在 6 个数字中。我正在查看的代码是

0x08048e22 <+0>:     push   %ebp
0x08048e23 <+1>:     mov    %esp,%ebp
0x08048e25 <+3>:     sub    $0x48,%esp
0x08048e28 <+6>:     mov    %ebx,-0xc(%ebp)
0x08048e2b <+9>:     mov    %esi,-0x8(%ebp)
0x08048e2e <+12>:    mov    %edi,-0x4(%ebp)
0x08048e31 <+15>:    lea    -0x30(%ebp),%ebx
0x08048e34 <+18>:    mov    %ebx,0x4(%esp)
0x08048e38 <+22>:    mov    0x8(%ebp),%eax
0x08048e3b <+25>:    mov    %eax,(%esp)
0x08048e3e <+28>:    call   0x8049248 <read_six_numbers>
0x08048e43 <+33>:    lea    -0x24(%ebp),%edi
0x08048e46 <+36>:    mov    $0x0,%esi
0x08048e4b <+41>:    mov    (%ebx),%eax
=>0x08048e4d <+43>:    cmp    0xc(%ebx),%eax
0x08048e50 <+46>:    je     0x8048e57 <phase_2+53>
0x08048e52 <+48>:    call   0x8049206 <explode_bomb>
0x08048e57 <+53>:    add    (%ebx),%esi
0x08048e59 <+55>:    add    $0x4,%ebx
0x08048e5c <+58>:    cmp    %edi,%ebx
0x08048e5e <+60>:    jne    0x8048e4b <phase_2+41>
0x08048e60 <+62>:    test   %esi,%esi
0x08048e62 <+64>:    jne    0x8048e69 <phase_2+71>
0x08048e64 <+66>:    call   0x8049206 <explode_bomb>
0x08048e69 <+71>:    mov    -0xc(%ebp),%ebx
0x08048e6c <+74>:    mov    -0x8(%ebp),%esi
0x08048e6f <+77>:    mov    -0x4(%ebp),%edi
0x08048e72 <+80>:    mov    %ebp,%esp
0x08048e74 <+82>:    pop    %ebp
0x08048e75 <+83>:    ret

我认为我需要做的事情是否正确?如果没有,请提供正确方向的提示,以及检查该 cmp 语句中确切比较的内容的方法。

谢谢!

通了=)经过一天左右的凝视,我意识到比较语句所做的只是确保输入的第1和第4,第2和第5,第3和第6个数字都是等价的。感谢小丑提供的 ebx 指向第一个本地变量的信息。

相关内容

  • 没有找到相关文章

最新更新