Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 第五阶段的映射特征_Debugging_Assembly_X86_Gdb_Reverse Engineering - Fatal编程技术网

Debugging 第五阶段的映射特征

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

好了,伙计们,我知道堆栈中已经有一个类似的问题,但我仍然不知道如何将字符映射到数组表

这个炸弹的相位长度为6。我知道程序使用的6个字符需要加到0x24行

所以,如果我输入TTTT之类的东西,作为116或01110100的ascii值,如果你得到二进制的最后4,它将等于4。因此,4*6个字符在十进制中等于0x24或36

我仍然很困惑如何绘制地图。有人能帮我解决吗。或者告诉我如何绘制地图

谢谢

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字符。