Debugging 第五阶段的映射特征
好了,伙计们,我知道堆栈中已经有一个类似的问题,但我仍然不知道如何将字符映射到数组表 这个炸弹的相位长度为6。我知道程序使用的6个字符需要加到0x24行 所以,如果我输入TTTT之类的东西,作为116或01110100的ascii值,如果你得到二进制的最后4,它将等于4。因此,4*6个字符在十进制中等于0x24或36 我仍然很困惑如何绘制地图。有人能帮我解决吗。或者告诉我如何绘制地图 谢谢Debugging 第五阶段的映射特征,debugging,assembly,x86,gdb,reverse-engineering,Debugging,Assembly,X86,Gdb,Reverse Engineering,好了,伙计们,我知道堆栈中已经有一个类似的问题,但我仍然不知道如何将字符映射到数组表 这个炸弹的相位长度为6。我知道程序使用的6个字符需要加到0x24行 所以,如果我输入TTTT之类的东西,作为116或01110100的ascii值,如果你得到二进制的最后4,它将等于4。因此,4*6个字符在十进制中等于0x24或36 我仍然很困惑如何绘制地图。有人能帮我解决吗。或者告诉我如何绘制地图 谢谢 Dump of assembler code for function phase_5: 0x000
Dump of assembler code for function phase_5:
0x0000000000401123 <+0>: push %rbx
0x0000000000401124 <+1>: mov %rdi,%rbx
0x0000000000401127 <+4>: callq 0x401361 <string_length>
0x000000000040112c <+9>: cmp $0x6,%eax
0x000000000040112f <+12>: je 0x401136 <phase_5+19>
0x0000000000401131 <+14>: callq 0x4015e4 <explode_bomb>
0x0000000000401136 <+19>: mov $0x0,%eax
0x000000000040113b <+24>: mov $0x0,%edx
0x0000000000401140 <+29>: movzbl (%rbx,%rax,1),%ecx
0x0000000000401144 <+33>: and $0xf,%ecx
=> 0x0000000000401147 <+36>: add 0x4025e0(,%rcx,4),%edx
0x000000000040114e <+43>: add $0x1,%rax
0x0000000000401152 <+47>: cmp $0x6,%rax
0x0000000000401156 <+51>: jne 0x401140 <phase_5+29>
0x0000000000401158 <+53>: cmp $0x24,%edx
0x000000000040115b <+56>: je 0x401162 <phase_5+63>
0x000000000040115d <+58>: callq 0x4015e4 <explode_bomb>
0x0000000000401162 <+63>: pop %rbx
0x0000000000401163 <+64>: retq
End of assembler dump.
(gdb) x/16 0x4025e0
0x4025e0 <array.3161>: 2 10 6 1
0x4025f0 <array.3161+16>: 12 16 9 3
0x402600 <array.3161+32>: 4 7 14 5
0x402610 <array.3161+48>: 11 8 15 13
功能阶段_5的汇编程序代码转储:
0x0000000000401123:推送%rbx
0x0000000000401124:mov%rdi,%rbx
0x0000000000401127:callq 0x401361
0x000000000040112c:cmp$0x6,%eax
0x000000000040112f:je 0x401136
0x0000000000401131:callq 0x4015e4
0x0000000000401136:mov$0x0,%eax
0x000000000040113b:mov$0x0,%edx
0x0000000000401140:movzbl(%rbx,%rax,1),%ecx
0x0000000000401144:和$0xf,%ecx
=>0x0000000000401147:添加0x4025e0(,%rcx,4),%edx
0x000000000040114e:添加$0x1,%rax
0x00000000004011152:cmp$0x6,%rax
0x00000000004011156:jne 0x401140
0x0000000000401158:cmp$0x24,%edx
0x000000000040115b:je 0x401162
0x0000000000401115D:callq 0x4015e4
0x0000000000401162:弹出%rbx
0x0000000000401163:retq
汇编程序转储结束。
(gdb)x/16 0x4025e0
0x4025e0:2106 1
0x4025f0:121693
0x402600:47 14 5
0x402610:11 8 15 13
我还想知道如何找到实际字符总和必须是0x24
,因此从表中选择任何6个加起来等于0x24
的数字,然后为每个索引选择任何具有适当低位的ascii字符。