二进制5和4位索引

时间:2019-07-19 18:59:00

标签: c assembly x86 reverse-engineering

我正在尝试解决“二进制炸弹”练习的第5阶段,该阶段要求用户输入由6个字符组成的字符串才能继续。虽然我已经知道这6个字符的总和为0x39,也就是57,但是我在理解此过程时遇到了麻烦。我为阶段5找到的所有指南都建议从数组中选择6个数字,总计为0x1c / 28,然后选择6个具有适当索引的字符作为“低4位”,但坦率地说,我无法弄清楚如何对应字母/字符到索引的低4位。

现在,我从数组中得到6个数字,它们总计为28,分别是1、3、4、5、6和9。但是我不知道如何将它们与低4位相对应。 / p>

这是第5阶段相关的代码。

   0x08048b58 <+0>: push   %ebp
   0x08048b59 <+1>: mov    %esp,%ebp
   0x08048b5b <+3>: push   %edi
   0x08048b5c <+4>: push   %esi
   0x08048b5d <+5>: push   %ebx
=> 0x08048b5e <+6>: sub    $0x1c,%esp
   0x08048b61 <+9>: mov    0x8(%ebp),%ebx
   0x08048b64 <+12>:    mov    %ebx,(%esp)
   0x08048b67 <+15>:    call   0x8048d10 <string_length>
   0x08048b6c <+20>:    cmp    $0x6,%eax
   0x08048b6f <+23>:    je     0x8048b76 <phase_5+30>
   0x08048b71 <+25>:    call   0x8048e51 <explode_bomb>
   0x08048b76 <+30>:    mov    $0x0,%edx
   0x08048b7b <+35>:    mov    $0x0,%eax
   0x08048b80 <+40>:    mov    $0x8049400,%ecx
   0x08048b85 <+45>:    movsbl (%ebx,%eax,1),%esi
   0x08048b89 <+49>:    and    $0xf,%esi
   0x08048b8c <+52>:    add    (%ecx,%esi,4),%edx
   0x08048b8f <+55>:    add    $0x1,%eax
   0x08048b92 <+58>:    cmp    $0x6,%eax
   0x08048b95 <+61>:    jne    0x8048b85 <phase_5+45>
   0x08048b97 <+63>:    cmp    $0x39,%edx
---Type <return> to continue, or q <return> to quit---
   0x08048b9a <+66>:    je     0x8048ba1 <phase_5+73>
   0x08048b9c <+68>:    call   0x8048e51 <explode_bomb>
   0x08048ba1 <+73>:    add    $0x1c,%esp
   0x08048ba4 <+76>:    pop    %ebx
   0x08048ba5 <+77>:    pop    %esi
   0x08048ba6 <+78>:    pop    %edi
   0x08048ba7 <+79>:    pop    %ebp
   0x08048ba8 <+80>:    ret   ```

0 个答案:

没有答案