我目前正在尝试完成我的二进制炸弹项目。我目前陷入第二阶段。
我已经检查过,发现解除炸弹这一阶段的密码需要 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”、符号“<”和数字“7”。
我尝试的输入是:
l<7
7<l
7 < l
l < 7
事实上我很困惑。我到底做错了什么导致了“炸弹”功能?还有其他编写输入的方法吗?
最佳答案
What exactly am I doing wrong that is causing the 'bomb' function?
根据您提供的信息,我们无法判断。
IFF您调用phase_2
带有指向字符 "l<7"
的指针,炸弹不会爆炸(至少在 phase_2
不会爆炸,它仍然可能在其他地方爆炸)。
既然您声称已经尝试过该输入,那么您的问题一定出在其他地方。也许您的输入无法进入 phase_2
不受干扰?
关于c - 二进制炸弹的汇编代码困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32550538/