15.PDE和PTE属性

一、PDE PTE 结构

低12位是权限位。

低1位是P位,P=1代表有效,P=0代表无效

低2位是RW位,RW=0表示只读,RW=1表示可读可写。

低3位是U/S位,U/S=1表示用户及超级用户都可以操作页表,U/S=0表示只有超级用户可以操作。(超级用户=非3环),用户层不能访问高2G内存就是该位限制的!!!

低7位是PS位,PS是PDE的第8位,PS是PAGE SIZE 的意思。我们之前遇到的PDE PS位大部分都是0;当PS=1,则PDE直接指向物理页,无PTE,低22位是偏移。
A::0 表示该页未被访问,1表示已被访问。
D::脏位。0表示该页未写过,1表示该页被写过。
PAT:这个不管
G:如果G位为1刷新TLB时将不会刷新PDE/PTE的G位为1的页,G=1切换进程该PTE扔然有效(这里学完TLB才能明白)

二、修改常量区数据

C语言中,修改常量区的字符串是不允许的,原因是物理页不具有写权限。

按10-10-12模式拆好了线性地址,现在只要在windbg中找到PDE和PTE,将低2位改成1即可。

0x415818

1    (1*4)

0000010101   (0x15*4)

100000011000  (0x818)

 

查CR3
!process 0 0
CR3=148af000

查PDE
!dd 148af000+4
PDE=19aef067

查PTE
!dd 19aef000+4*15
PTE=00c18025

查物理地址
!db 00c18000+818

 

确定没找错,然后观察发现PTE的RW=0,改成1就好了:
!ed 19aef054 00c18027

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值