就像我之前的问题,这涉及到一个赋值方法,它需要一个特定的密码,代码是隐藏的,我们必须从汇编代码中推断密码(我想避免碰撞。到目前为止,我已经完成了几个阶段,并且我的理解能力也越来越强,但是这个阶段有几个方面我遇到了问题,到目前为止,我知道这个阶段的密码是两个整数,回溯是我的转到方法对其中的一些,但不是这个阶段非常有帮助。了解/解码难懂的汇编代码
- 我明白cltq扩展EAX(RAX),以4个字,但我不知道这将如何影响计算,还不能确定这是否会发生什么线被多次击中。
- 阶段5 + 82->阶段5 + 65(循环?)我试图从什么值开始,所以ecx(rcx)可以通过最终比较?
- mov 0x402600(,%rax,4),%eax < - 这条线是做什么的?空白将我扔掉,是一个空白= 0?
任何其他帮助理解正在发生的事情和我应该如何接近搞清楚输入将是有益的,我试图将其转换回C代码,就像前几个阶段
0x00000000004010b4 <phase_5+0>: sub $0x18,%rsp 0x00000000004010b8 <phase_5+4>: lea 0x10(%rsp),%rcx 0x00000000004010bd <phase_5+9>: lea 0x14(%rsp),%rdx 0x00000000004010c2 <phase_5+14>: mov $0x4026aa,%esi 0x00000000004010c7 <phase_5+19>: mov $0x0,%eax 0x00000000004010cc <phase_5+24>: callq 0x400b80<[email protected]> 0x00000000004010d1 <phase_5+29>: cmp $0x1,%eax 0x00000000004010d4 <phase_5+32>: jg 0x4010db<phase_5+39> 0x00000000004010d6 <phase_5+34>: callq 0x401421(explode_bomb) 0x00000000004010db <phase_5+39>: mov 0x14(%rsp),%eax 0x00000000004010df <phase_5+43>: and $0xf,%eax 0x00000000004010e2 <phase_5+46>: mov %eax,0x14(%rsp) 0x00000000004010e6 <phase_5+50>: cmp $0xf,%eax 0x00000000004010e9 <phase_5+53>: je 0x40111b <phase_5+103> 0x00000000004010eb <phase_5+55>: mov $0x0,%edx 0x00000000004010f0 <phase_5+60>: mov $0x0,%ecx 0x00000000004010f5 <phase_5+65>: add $0x1,%edx 0x00000000004010f8 <phase_5+68>: cltq 0x00000000004010fa <phase_5+70>: mov 0x402600(,%rax,4),%eax 0x0000000000401101 <phase_5+77>: add %eax,%ecx 0x0000000000401103 <phase_5+79>: cmp $0xf,%eax 0x0000000000401106 <phase_5+82>: jne 0x4010f5 <phase_5+65> 0x0000000000401108 <phase_5+84>: movl $0xf,0x14(%rsp) 0x0000000000401110 <phase_5+92>: cmp $0xf,%edx 0x0000000000401113 <phase_5+95>: jne 0x40111b <phase_5+103> 0x0000000000401115 <phase_5+97>: cmp %ecx,0x10(%rsp) 0x0000000000401119 <phase_5+101>: je 0x401120 <phase_5+108> 0x000000000040111b <phase_5+103>: callq 0x401421 <explode_bomb> 0x0000000000401120 <phase_5+108>: add $0x18,%rsp 0x0000000000401124 <phase_5+112>: retq
我能够解决这个问题,主要是通过猜测和检查。第一个整数为5的输入向我提供了phase_5 + 92所需的15%edx,第二个数字仅用于phase_5 + 97,通过查看%ecx并将5确定为我确定需要的第一个输入然而,代码究竟发生了什么仍然是一个谜...... – Gadesxion 2012-02-16 01:50:50