(从简书搬运过来,格式可能有问题)
题目:

课程实践4(内存布局):
1. 查看 hello.exe 的4G内存分布,分析其PDE和PTE内容(给出截图),并建立PDE&PTE与节属性的关联。
2. 手动修改“hello world”可执行文件的节属性(RWX),然后执行该程序,分析其PDE和PTE内容的变化。

一、
1. windows x86的内存分布介绍:

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 与节之间的关联(图片中数字只是示意)
  1. 查看进程!process 0 0 hello.exe
    DirBase:页目录基址
  2. 选择进程.process f0510040
  3. 打印PTE PDE信息!pte 81c39020
    显示的是虚拟地址
  4. 转换成物理地址 !vtop 基址 虚拟地址
  5. 查看刚才用ollydbg看到的虚拟地址内容:!address
    和刚才的属性一致
二、
1. 原文件的.text节属性为60500020,代表可读,可执行,按 16 位对齐,包含可执行代码。在第一问中:

PDE属性为067,PTE属性为025

2. 修改.text 节的属性为:60500020 -> E0500020,即增加可写属性 0x80000000。重新查看,PDE为067(不变);PTE为225(变化)(本来应该是可写的。。。)
posted on 2017-04-23 11:20  yingtaomj  阅读(323)  评论(0编辑  收藏  举报