正确的EAX值和什么是eiz?

时间:2017-10-26 07:21:43

标签: assembly x86 gdb reverse-engineering ida

我正在进行 CMU炸弹挑战,并坚持(第6阶段)

使用GDB进行调试时我无法理解两件事,请查看屏幕截图以获得清晰度。

疑惑1:

如您所见,当前要执行的指令是

mov    eax,DWORD PTR [edx+ecx*1] 

和寄存器中的值:

EDX:0xc
ECX:0x1

执行前:第1个屏幕截图

Before Execution

因此,计算后移动的值应为 0xd ,但 0x4 ,如下面的第二个屏幕截图所示。

执行后:第二个屏幕截图

After Execution

怀疑2:

在上面的屏幕截图中(标记为 2 ),什么是 eiz ,因为gdb正在显示?

IDA反汇编相同的2条指令

IDA Disassembly



更新:

经过一些评论后,虽然怀疑2 被清除但引起了对寄存器寻址的一些基本疑虑

怀疑3:

假设:
edx = 0xffffd120和[edx] = 2
ecx = 0xffffd130和[ecx] = 3
< strong> [0x4ffff15e0] = 7

mov    eax,DWORD PTR [edx+ecx*4]

以上表达式是否与此相同: eax = [edx] + [ecx] * 4 (即2 + 3 * 4 = 0xd)?

或者说: eax = [edx + ecx * 4] (即7)
0xffffd120+0xffffd130*4 = 0x4ffff15e0 ==> [0x4ffff15e0]

0 个答案:

没有答案