炸弹实验室第1阶段

时间:2017-11-04 13:15:41

标签: assembly computer-science

我需要一些帮助解决我的炸弹实验室的第一阶段。在我的objdump文件的phase_1下给出了以下汇编代码:

08048ec1 <phase_1>:
8048ec1:    55                      push   %ebp
8048ec2:    89 e5                   mov    %esp,%ebp
8048ec4:    83 ec 28                sub    $0x28,%esp
8048ec7:    8b 45 08                mov    0x8(%ebp),%eax
8048eca:    89 45 e4                mov    %eax,-0x1c(%ebp)
8048ecd:    65 a1 14 00 00 00       mov    %gs:0x14,%eax
8048ed3:    89 45 f4                mov    %eax,-0xc(%ebp)
8048ed6:    31 c0                   xor    %eax,%eax
8048ed8:    83 ec 04                sub    $0x4,%esp
8048edb:    8d 45 e8                lea    -0x18(%ebp),%eax
8048ede:    50                      push   %eax
8048edf:    68 d7 9b 04 08          push   $0x8049bd7
8048ee4:    ff 75 e4                pushl  -0x1c(%ebp)
8048ee7:    e8 c4 f9 ff ff          call   80488b0 <sscanf@plt>
8048eec:    83 c4 10                add    $0x10,%esp
8048eef:    89 45 ec                mov    %eax,-0x14(%ebp)
8048ef2:    83 7d ec 01             cmpl   $0x1,-0x14(%ebp)
8048ef6:    74 05                   je     8048efd <phase_1+0x3c>
8048ef8:    e8 47 04 00 00          call   8049344 <explode_bomb>
8048efd:    83 ec 0c                sub    $0xc,%esp
8048f00:    6a 06                   push   $0x6
8048f02:    e8 27 00 00 00          call   8048f2e <function2>
8048f07:    83 c4 10                add    $0x10,%esp
8048f0a:    89 45 f0                mov    %eax,-0x10(%ebp)
8048f0d:    8b 45 e8                mov    -0x18(%ebp),%eax
8048f10:    3b 45 f0                cmp    -0x10(%ebp),%eax
8048f13:    74 05                   je     8048f1a <phase_1+0x59>
8048f15:    e8 2a 04 00 00          call   8049344 <explode_bomb>
8048f1a:    90                      nop
8048f1b:    8b 45 f4                mov    -0xc(%ebp),%eax
8048f1e:    65 33 05 14 00 00 00    xor    %gs:0x14,%eax
8048f25:    74 05                   je     8048f2c <phase_1+0x6b>
8048f27:    e8 84 f8 ff ff          call   80487b0 <__stack_chk_fail@plt>
8048f2c:    c9                      leave  
8048f2d:    c3                      ret

(我使用的是Ubuntu操作系统)。

我在phase_1和explode_bomb设置了necassary断点,我在explode_bomb发生之前检查了寄存器值。在炸弹爆炸之前,$ eax寄存器的值是我的输入字符串。

我很难理解这段代码的作用,特别是:

8048eef:    89 45 ec                mov    %eax,-0x14(%ebp)
8048ef2:    83 7d ec 01             cmpl   $0x1,-0x14(%ebp)
8048ef6:    74 05                   je     8048efd <phase_1+0x3c>

我的理解是它将我的输入字符串与值$ 0x1进行比较,然后如果它们相等则跳过爆炸炸弹。但$ 0x1的价值是多少?

调用的方法:

 080488b0 <sscanf@plt>:
 80488b0:   ff 25 6c c0 04 08       jmp    *0x804c06c
 80488b6:   68 c0 00 00 00          push   $0xc0
 80488bb:   e9 60 fe ff ff          jmp    8048720 <_init+0x24>

提前感谢您的帮助:)

0 个答案:

没有答案