我目前正在尝试完成我的二进制炸弹项目。我目前处于第二阶段。

我已经检查过,发现可以使炸弹处于此阶段的密码需要3次输入才能通过,并且它以字节格式比较它们(因此它正在检查字符)。我的问题是实际上输入密码。简而言之,我很确定我知道要传递的正确代码,但是大多数情况下,它会导致我调用炸弹爆炸功能。

08048bab <phase_2>:
8048bab:       55                      push   %ebp
8048bac:       89 e5                   mov    %esp,%ebp
8048bae:       83 ec 08                sub    $0x8,%esp
8048bb1:       8b 45 08                mov    0x8(%ebp),%eax
8048bb4:       80 38 6c                cmpb   $0x6c,(%eax)
8048bb7:       75 0c                   jne    8048bc5 <phase_1+0x1a>
8048bb9:       80 78 01 3c             cmpb   $0x3c,0x1(%eax)
8048bbd:       75 06                   jne    8048bc5 <phase_1+0x1a>
8048bbf:       80 78 02 37             cmpb   $0x37,0x2(%eax)
8048bc3:       74 05                   je     8048bca <phase_1+0x1f>
8048bc5:       e8 3e 02 00 00          call   8048e08 <blow_up_bomb>
8048bca:       c9                      leave
8048bcb:       c3                      ret


他们在这种情况下比较的值(据我所知)是字母“ l”,符号“
我尝试的输入是:

l<7
7<l
7 < l
l < 7


我真的很困惑。我到底在做错什么导致“炸弹”功能?还有另一种编写输入的方式吗?

最佳答案

我到底在做错什么导致“炸弹”功能?


我们无法告知您提供的信息。

如果您使用指向字符phase_2的指针调用"l<7",炸弹将不会爆炸(至少不在phase_2中,它可能仍会在其他地方爆炸)。

由于您声称尝试过该输入,因此您的问题必须在其他地方。也许您的输入不能使phase_2毫不费力?

10-07 15:20