题目:
课程实践4(内存布局):
- 查看 hello.exe 的4G内存分布,分析其PDE和PTE内容(给出截图),并建立PDE&PTE与节属性的关联。
- 手动修改“hello world”可执行文件的节属性(RWX),然后执行该程序,分析其PDE和PTE内容的变化。
一、
1. windows x86的内存分布介绍:
内核模式分区:系统需要用这一空间来存放内核代码、设备驱动程序代码、设备输入/输出高速缓存、非分页缓冲池分配表、进程页面表等;用户模式分区:每个进程都有自
己的数据分区。
2. 用Ollydbg查看文件.text
节在虚拟内存中的地址:
注意:
.text
在内存中的虚拟地址时候00401000
。另一方面,用
peview
来查看.text
节的权限:3. 安装windbg
4. 用 windbg 查看文件内存分布。
界面上方为控制台输出结果,界面下方为命令行。
在命令行中输入!address
,可以查看用户模式内存空间的分布,!
代表物理地址。
找到exe
文件.text
开始的地方,即00400000
:
5. 查看系统内存分区
选择file->kernel debug->local
进入内核调试模式。
输入!address
可看到系统内存分区。
6. 查找 PDE 和 PTE 与节之间的关联(图片中数字只是示意)
- 查看进程
!process 0 0 hello.exe
- 选择进程
.process f0510040
- 打印PTE PDE信息
!pte 81c39020
- 转换成物理地址
!vtop 基址 虚拟地址
- 查看刚才用
ollydbg
看到的虚拟地址内容:!address