首页
社区
课程
招聘
[原创]启用PAE后虚拟地址到物理地址的转换
发表于: 2013-11-3 20:54 25113

[原创]启用PAE后虚拟地址到物理地址的转换

2013-11-3 20:54
25113
由常规的两级页表转换得不到物理地址的引发的思考?
可能你会发现一个郁闷的事情--按照通常的两级页表的转化得不到正确物理地址,到底是哪个环节出了问题咧,其实一切都是PAE惹的祸!

PAE是神马?
PAE:全称Phyiscal Address Extension,物理地址扩展.
如何判断PAE是否开启了PAE.
一般两个特点:
我的电脑=》属性=》常规面板中有物理地址扩展的字样。



CR4寄存器的第5位为1说明开启了PAE

说明当前系统启用了PAE.

新的转化规则
转换示意图


规则:
每个项的长度为8
VA为
2位:(30—31)页目录指针表的索引
9位:(21—29)页目录表索引
9位:(12—20)页表索引
12位:(0—11)页内偏移
例如:开启PAE的情况下将计算器进程的入口点0x01012475转化为物理地址


                         页目录指针表的索引    页目录表索引  页表索引       页内偏移
0x01012475 《=》         00                     000001000   000010010   010001110101
                         0x0                       0x8         0x12           0x475

1.!process 0 0获取计算器进程的信息

页目录指针表物理地址:0x17f02c0
2.定位页目录指针表并获取页目录表物理页地址

页目录指针表项的下标为0,所以就是0x06d13801,因此0x06d13000是页目录表物理页面的首地址。
3.定位页表项

0x4250867就是要找的页目录表项,因此页表物理内存页面首地址为0x4250000.
4.定位物理页面

0x56b7000就是物理页面首地址,0x457是偏移,所以0x056b7475就是我们要转化的物理地址了。

正好就是虚拟地址对应的内容。

修改物理地址处首字节对比虚拟地址处显示内容


虚拟地址处内容也随之改变了。

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (25)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
非常好的文章~~
2013-11-3 22:08
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark ~~ 学习
2013-11-3 22:51
0
雪    币: 45
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问题:
1. 获取计算器进程的信息 是什么工具 ?

2. 页目录指针表项的下标为0,所以就是0x06d13801,因此0x06d13000是页目录表物理页面的首地址
   ,这句是怎么推断出来的?

3. 0x4250867就是要找的页目录表项,因此页表物理内存页面首地址为0x4250000 这句是怎么推断出来的 ?

4. 0x56b7000就是物理页面首地址,0x457是偏移,所以0x056b7475就是我们要转化的物理地址了 这句又是怎么     推断出来的 ??
2013-11-3 22:59
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
5
解释:
1.计算机的进程信息是使用windbg获取的.
2.这个首先要弄明白虚拟地址几个部分代表了什么意思,还有篇文章没发,看了你就应该可以懂了.没注意发的顺序
3.不理解?
2013-11-3 23:50
0
雪    币: 541
活跃值: (654)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
6
好文顶帖.com
2013-11-4 07:54
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好帖,顶起
2013-11-4 10:24
0
雪    币: 77
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不错不错不错
2013-11-4 17:30
0
雪    币: 45
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
另外一篇发表在哪里了? 刚好这几天在学习windows内存管理方面的知识。
2013-11-4 19:11
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
10
见今天发的windows分页机制
2013-11-4 20:14
0
雪    币: 35
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
很好的文章!
2013-11-4 21:48
0
雪    币: 27
活跃值: (90)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
12
哇,教主都说是好文了。。
2013-11-5 09:22
0
雪    币: 180
活跃值: (80)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
刚开始从头看,0x01012475不知道是哪里来的。看到最后一张图才看到这是虚拟地址.
楼主应该把最后的图片放在前面。

看后才完全懂了。以前都是半懂不懂的。多谢楼主了。
2013-11-5 10:05
0
雪    币: 253
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
教主都说好了,真是好贴啊。。。
2013-11-5 11:40
0
雪    币: 10845
活跃值: (17236)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
非常有价值的技术文章,要是楼主能出一个windows 32位的X86系统的4G内存补丁就完美了
2013-11-6 09:19
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
16
等忙完了工作,就弄一个试试
2013-11-6 21:20
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
可以搞个同步多核CPU直接写物理地址的Demo么?
2013-11-8 09:23
0
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
18
有个问题,百度到PAE是36位,能寻址64gb空间,多的位数哪里来。
2014-1-5 21:02
0
雪    币: 106
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
32位==4G
36位==16*4G
2014-5-14 14:44
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
真好啊,今天发现了很多有价值的东西
2014-6-9 11:26
0
雪    币: 0
活跃值: (720)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
物理地址为 36位

用 dq 代替 dd 命令好点(windows internal 第六版用的 dq)
2014-11-3 22:03
0
雪    币: 1140
活跃值: (3041)
能力值: ( LV12,RANK:385 )
在线值:
发帖
回帖
粉丝
22
CR4寄存器的第5位是不是标错了?
记得寄存器的位数是从0开始数的。
还是这个标错了:http://blogs.msdn.com/b/ntdebugging/archive/2010/06/22/part-3-understanding-pte-non-pae-and-x64.aspx
2015-1-28 10:23
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
23
,感谢指正...
2015-1-28 10:36
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
不错的文章
2017-12-16 10:27
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
25
非常棒
2019-12-19 10:20
0
游客
登录 | 注册 方可回帖
返回
//