1

当我查看 Olly 中的寄存器窗口时,我看到代码段和数据段寄存器都跨越了整个内存空间。这是否意味着它们相互重叠?

当我查看内存映射时,它似乎同时填充了代码区域和数据区域。

4

1 回答 1

0

在 win32 上,几乎所有的段寄存器都从 0 变为 0xffffffff。所以,是的,你可以说它们重叠。例如,您可以在代码中自由交换段寄存器(但指令的操作码通常会因为前缀而变大)。

一个例外是 FS 寄存器。它为进程中的每个线程设置不同,可用于定位线程信息块

Windows 使用内存保护来尝试将数据和代码分开保存。如果查看内存映射,您会在“访问”列中看到哪些内存块具有“E”(执行保护)。这可能是所有代码并且没有“W”(写保护)。

于 2013-05-25T18:05:36.580 回答