我正在尝试解决“二进制炸弹”练习的第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 ```