无法理解汇编代码和GDB的使用

时间:2019-04-12 19:23:13

标签: assembly x86 gdb

这是我的汇编代码:

    0x08048bd0 <+0>:    sub    $0x2c,%esp
    0x08048bd3 <+3>:    movl   $0x0,0x1c(%esp)
    0x08048bdb <+11>:   lea    0x1c(%esp),%eax
    0x08048bdf <+15>:   mov    %eax,0x8(%esp)
    0x08048be3 <+19>:   movl   $0x804a439,0x4(%esp)
    0x08048beb <+27>:   mov    0x30(%esp),%eax
    0x08048bef <+31>:   mov    %eax,(%esp)
 => 0x08048bf2 <+34>:   call   0x8048870 <__isoc99_sscanf@plt>
    0x08048bf7 <+39>:   cmp    $0x1,%eax
    0x08048bfa <+42>:   je     0x8048c01 <phase_1+49>
    0x08048bfc <+44>:   call   0x8049455 <explode_bomb>
    0x08048c01 <+49>:   cmpl   $0x19a,0x1c(%esp)
    0x08048c09 <+57>:   je     0x8048c10 <phase_1+64>
    0x08048c0b <+59>:   call   0x8049455 <explode_bomb>
    0x08048c10 <+64>:   add    $0x2c,%esp
    0x08048c13 <+67>:   ret

我正在使用二进制炸弹,它提供了汇编代码,必须从汇编代码中找到正确的输入以对其进行解散。我是GDB和Assembly的新手,所以他在代码的特定部分遇到了麻烦。

我已在phase_1处设置了断点,但是当我使用ni遍历代码时,炸弹在到达<explode_bomb>的位置时会爆炸,有什么办法可以解决?我知道eax必须等于1,才能使炸弹不爆炸。我对第一个函数调用中的内容感到困惑,当我键入si时,它看起来像这样。

 => 0x08048870 <+0>:    jmp    *0x804d058
    0x08048876 <+6>:    push   $0x98
    0x0804887b <+11>:   jmp    0x8048730

0 个答案:

没有答案