c - 二进制炸弹的汇编代码困惑

标签 c assembly gdb compare binary-bomb

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

我已经检查过,发现解除炸弹这一阶段的密码需要 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/

相关文章:

python - import ed25519._ed25519 适用于 powershell 但不适用于 GAE

ubuntu - 无法在 gdb 中打印 errno,提示缺少共享库,但它存在

gdb - 在 GDB 编译代码命令中,哪些语言结构的行为与原始源代码中的完全相同?

call_usermodehelper 无法正常工作

c - 传递类型定义函数指针

c++ - PendSV/SVC 异常是否立即引发?

linux - 将寄存器值打印到控制台

c++ - gdb:将内存地址转换为 STL 对象

c - 关闭后如何重新绑定(bind)本地套接字?

ios - 统一 iOS 和 Android 上的 NEON 组件