软件安全4.内存布局

本文通过使用OllyDbg、PEView及WinDbg等工具,详细介绍了Windows x86架构下hello.exe程序的内存布局情况。不仅分析了不同内存区域的特点,还展示了如何查看和理解程序的页面表(PDE和PTE),并通过修改可执行文件的节属性进一步探讨这些变化对内存布局的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

windows x86的内存分布图
内核模式分区:系统需要用这一空间来存放内核代码、设备驱动程序代码、设备输入/输出高速缓存、非分页缓冲池分配表、进程页面表等;用户模式分区:每个进程都有自
己的数据分区。

2. 用Ollydbg查看文件.text节在虚拟内存中的地址:

1240
注意:.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(变化)(本来应该是可写的。。。)

转载于:https://www.cnblogs.com/yingtaomj/p/6751967.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值