2013-05-18 56 views
1

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

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

谢谢

回答

0

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

FS寄存器是一个例外。它在过程中针对每个线程设置不同,并可用于定位Thread Information Block

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