2013-05-18 43 views
1

當我看看Olly中的寄存器窗口時,我看到代碼段和數據段寄存器跨越整個內存空間。這是否意味着它們相互重疊?代碼數據段重疊

當我查看內存映射時,似乎它填充了代碼區和數據區。

謝謝

回答

0

Win32上幾乎所有的段寄存器從0到0xffffffff的。所以,是的,你可以說它們重疊。例如,您可以自由地在代碼中交換段寄存器(但由於前綴,指令的操作碼通常會變大)。

FS寄存器是一個例外。它在過程中針對每個線程設置不同,並可用於定位Thread Information Block

Windows使用內存保護來嘗試保持數據和代碼保存分開。如果查看內存映射,可以在「訪問」列中看到哪些內存塊具有「E」(執行保護)。這可能是所有代碼並且沒有「W」(寫保護)。