【发布时间】:2020-02-08 08:11:49
【问题描述】:
我需要在游戏中找到地址,但不确定如何处理段偏移。
在 ollydbg 中,它显示了一个数据结构位于:
ss:[esp+28]
esp = 0019DF94
ss = 002B
那么结构的实际地址是什么?
是ss+esp+28吗?
【问题讨论】:
-
不,绝对不是
+ ss。如果这是 32 位代码,则您处于保护模式,因此 SS 是一个段选择器,而不是直接的段基值。在 Windows 和其他使用平面内存模型的普通操作系统上,SS 基数将始终为 0。 TL:DR:忽略 SS,并没有真正使用分段。 -
所以它只是 esp + 偏移量 (28)?
-
是的,很简单。
-
Addressing mode in IA-32 解释说,在 Windows 等 32 位/64 位平面内存模型操作系统下可以忽略分段,因此这是一个很好的副本。
标签: assembly x86 reverse-engineering addressing-mode memory-segmentation