1. 程式人生 > 其它 >軟體逆向原理與實踐 複習

軟體逆向原理與實踐 複習

一、IA-32的記憶體模型和記憶體管理

區分三個概念:實體地址、線性地址和邏輯地址

實體地址:CPU地址匯流排傳來的地址。

線性地址:空間是連續的,從0到FFFFFFFFH,虛擬地址不是被直接送到記憶體地址總線上,而是送到儲存器管理單元MMU,把虛擬地址對映為實體地址。

邏輯地址:在有地址變換功能的計算機中,訪內指令給出的地址 (運算元) 叫邏輯地址,也叫相對地址,也就是是機器語言指令中,用來指定一個運算元或是一條指令的地址。由段選擇器(Segment)和偏移(Offset)計算得到

1.真實模式

段選擇器(Segment)和偏移(Offset)都是16位

2.保護模式

保護模式中,處理器需要經過兩步完成到實體地址空間的轉換:邏輯地址轉換

線性地址空間分頁

(1)段模式

段選擇器裡有13位是全域性段描述符表索引或區域性段描述符表索引,來找到那一項段描述符-->段描述符共64位(還包括長度上限、訪問許可權等),裡有32位是段基地址。段基地址和偏移地址加和得到線性地址。

(2)段頁式

就是段模式加上分頁

之前段模式加和的得到直接就是線性地址,讀取裡面的內容即可。

這次得到線性地址中存的是頁目錄索引(10位)、頁表索引(10位)和物理頁內偏移(12位).通過頁目錄索引,查詢頁目錄,找到那一頁頁表的基址。加上頁表索引(在頁表內的偏移),得到頁表項。頁表項裡存的是物理頁基址,加上物理頁內偏移,從而找到實體地址。