首页
社区
课程
招聘
[讨论]请问虚拟地址到内存地址如下转换对么。
发表于: 2012-12-5 16:40 3448

[讨论]请问虚拟地址到内存地址如下转换对么。

2012-12-5 16:40
3448
unsigned int PDE;
unsigned int PTE;

if(VirtualAddress>=0x80000000 && VirtualAddress<0xa0000000)
{
PhysicalAddress=VirtualAddress-0x80000000;
}
else
{
PDE=*(unsigned int*)((VirtualAddress>>22)*4+0xC0300000);
if(PDE&0x00000001)
{
PTE=*(unsigned int*)((VirtualAddress>>12)*4+0xC0000000);
if(PTE&0x00000001)
{
PhysicalAddress=((PTE&0xFFFFF000)+(VirtualAddress&0x00000FFF));
}
}
}
在网上看到的这段代码,PTE=*(unsigned int*)((VirtualAddress>>12)*4+0xC0000000);
上面得到的PDE 为什么不用到下面来,不是说虚拟地址的第12位到第21位这10位是页表项的牵引么。
牵引值应该是某一个的页表的牵引,如上代码直接在1024个页表的第一个页表上开始牵引是否正确?

还是说明虚拟地址的第12位到第21位本身就是从页表基址开始牵引的,用系统中第一个页表做基址,并且牵引到第二个,第三个页表内的页表项..。如果是这样的话,那PDE有什么作用。(亦或是系统内部并非这样转换?)

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
据我跟了半天的MmGetPhysicalAddress
发现我的xpsp3,下,只用了c0600000 和c0600004 这2个地址,所以楼主~~~
2012-12-5 21:37
0
雪    币: 55
活跃值: (519)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
大哥有话明说,小弟洗耳恭听。
2012-12-5 21:49
0
游客
登录 | 注册 方可回帖
返回
//