題目:
課程實(shí)踐4(內(nèi)存布局):
- 查看 hello.exe 的4G內(nèi)存分布,分析其PDE和PTE內(nèi)容(給出截圖)颅夺,并建立PDE&PTE與節(jié)屬性的關(guān)聯(lián)衔统。
- 手動修改“hello world”可執(zhí)行文件的節(jié)屬性(RWX)奠骄,然后執(zhí)行該程序,分析其PDE和PTE內(nèi)容的變化橘蜜。
一、
1. windows x86的內(nèi)存分布介紹:
windows x86的內(nèi)存分布圖
內(nèi)核模式分區(qū):系統(tǒng)需要用這一空間來存放內(nèi)核代碼付呕、設(shè)備驅(qū)動程序代碼计福、設(shè)備輸入/輸出高速緩存、非分頁緩沖池分配表徽职、進(jìn)程頁面表等象颖;用戶模式分區(qū):每個進(jìn)程都有自
己的數(shù)據(jù)分區(qū)。
2. 用Ollydbg查看文件.text
節(jié)在虛擬內(nèi)存中的地址:
注意:
.text
在內(nèi)存中的虛擬地址時候00401000
姆钉。另一方面说订,用
peview
來查看.text
節(jié)的權(quán)限:可讀可執(zhí)行
3. 安裝windbg
4. 用 windbg 查看文件內(nèi)存分布。
界面上方為控制臺輸出結(jié)果潮瓶,界面下方為命令行陶冷。
在命令行中輸入!address
,可以查看用戶模式內(nèi)存空間的分布毯辅,!
代表物理地址埂伦。
找到exe
文件.text
開始的地方,即00400000
:
從內(nèi)存中得到的權(quán)限和之前得出的結(jié)論一致
5. 查看系統(tǒng)內(nèi)存分區(qū)
選擇file->kernel debug->local
進(jìn)入內(nèi)核調(diào)試模式思恐。
輸入!address
可看到系統(tǒng)內(nèi)存分區(qū)沾谜。
6. 查找 PDE 和 PTE 與節(jié)之間的關(guān)聯(lián)(圖片中數(shù)字只是示意)
- 查看進(jìn)程
!process 0 0 hello.exe
DirBase:頁目錄基址 - 選擇進(jìn)程
.process f0510040
- 打印PTE PDE信息
!pte 81c39020
顯示的是虛擬地址 - 轉(zhuǎn)換成物理地址
!vtop 基址 虛擬地址
- 查看剛才用
ollydbg
看到的虛擬地址內(nèi)容:!address
和剛才的屬性一致
二、
1. 原文件的.text
節(jié)屬性為60500020
胀莹,代表可讀基跑,可執(zhí)行,按 16 位對齊嗜逻,包含可執(zhí)行代碼涩僻。在第一問中:
PDE屬性為067,PTE屬性為025