4.3.1 windows
四種狀況建立新進程並調用MmInitializeProcessAddressSpace, 調用完這個函數的時候,一個進程的地址空間基本創建了,函數
可執行文件的映像和ntdll.dll(內存區對象)已經被映射到恰當的虛擬地址範圍內。線程
介紹到 在新進程的地址空間中,會克隆系統空間的頁目錄到新進程的頁目錄.對象
KeAttachProcess() 與 KeDetachProcess()進程
KeAttachProcess()函數的執行的時候,會把當前線程附載在新的的進程對象上,關鍵是把CR3切換爲新進程的頁目錄內存
KeDetachProcess 把線程恢復到父進程!it
4.3.2基礎
每一個進程都有本身獨立的頁目錄,前半部分對應於0x0 -- 0x7ff fffff 是每一個進程私有的,後半部分是拷貝系統空間的頁目錄。方法
4.3.3 VAD來管理0x0 -- 0x7ff fffff 空間!文件
4.3.4 在VAD的節點中有一種重要的類型 內存區對象。 內存區對象是windows 平臺 ,兩個或多個進程之間共享內存的一種經常使用方法。
它能夠被映射到系統的頁面文件或者其餘文件上!
內存區對象分種:一種創建在頁面文件的基礎上,稱爲:頁面文件支撐的內存區
另一種被映射到其餘文件,稱爲文件支撐的內存區,或者文件映射對象