汇编堆栈索引地址

时间:2012-01-07 15:48:29

标签: assembly ollydbg addressing-mode

我正在尝试使用ollydbg调试程序,我怀疑使用SS前缀索引模式地址。

以下是截图:

此时,指令

MOV BYTE PTR SS:[EBP-1],BL

会将EBX中的8位移至EBP(0012FDCC)中指向的地址减去1 0012FDCB

如果上述情况不正确,请告诉我。

在ollydbg程序中,右下角有一个堆栈表示,第一列是地址。为什么0012FDCB没有0012FDCB指向的位置?

1 个答案:

答案 0 :(得分:2)

我对ollydbg一无所知;希望熟悉它的人也会发布答案。

您对我们向您展示的指令所做的理解大多是正确的:它会将BL的内容(即EBX的 8位)移动到该地址中。堆栈段由[EBP减1]指出。如果EBP是0012FDCCh,那么该字节将存储在0012FDCBh。

我们通常不会说0012FDCBh指向任何地方,我们只是说它是一个内存位置,在这种情况下包含一个字节,即使从技术上来说,它是更正确的说它是一个内存位置的地址,因此在某种意义上,数字“指向”一个字节。但我们更愿意考虑指向内存的指针或寄存器,而不是纯数字。

我不知道为什么ollydbg没有显示0012FDCBh。你确定它没有显示出来吗?它可能显示0012FDCCh和0012FDC8h吗?如果是这样,那么它只是显示以DWORD分组的堆栈存储器,因此不显示0012FDCBh,因为它对应于0012FDC8h处DWORD中的四个字节之一。查看存储在0012FDC8h中的DWORD值,单步执行MOV指令,您应该看到该字的最高有效字节更改为BL的值。 (如果该地址中的值与BL的值不同。)Ollydbg也可能显示的行分组行数超过一个DWORD,但同样的原则适用。