页帧的寻找

一、内核对物理内存的管理(MmPfnDatabase)

Windows通过几个全局变量来对物理内存进行管理:

MmPfnDatabase,页帧数据库(也叫FPN数据库),是MMPFN结构体类型的数组,它的索引是物理地址页帧号。

1: kd> dq mmpfndatabase
fffff800`04119228  fffffa80`00000000 000001f4`00000040
fffff800`04119238  00000000`00000390 00000000`00000000
fffff800`04119248  00080000`00000001 00000001`ffffffff
fffff800`04119258  fffffa80`18de7000 01d84429`7d237fba
fffff800`04119268  fffffa80`18e41580 fffffa80`18e725c0
fffff800`04119278  00000000`00006c00 00000000`5c7f8000
fffff800`04119288  fffffa80`18d47b50 00000000`00000001
fffff800`04119298  fffffa80`18eaa870 00026161`00000000

ffffa80`00000000 则是存放物理地址0,大小一个页(0x1000)的物理地址信息

nt!_MMPFN
   +0x000 u1               : <unnamed-tag>
   +0x008 u2               : <unnamed-tag>
   +0x010 PteAddress       : Ptr64 _MMPTE
   +0x010 VolatilePteAddress : Ptr64 Void
   +0x010 Lock             : Int4B
   +0x010 PteLong          : Uint8B
   +0x018 u3               : <unnamed-tag>
   +0x01c UsedPageTableEntries : Uint2B
   +0x01e VaType           : UChar
   +0x01f ViewCount        : UChar
   +0x020 OriginalPte      : _MMPTE
   +0x020 AweReferenceCount : Int4B
   +0x028 u4               : <unnamed-tag>

假设我们要找第三个物理地址,也就是物理地址是3000;页帧数据库+_MMPFN大小*第几个

ffffa80`00000000+0x30*3

1: kd> dt _mmpfn fffffa80`00000000+30*3
nt!_MMPFN
   +0x000 u1               : <unnamed-tag>
   +0x008 u2               : <unnamed-tag>
   +0x010 PteAddress       : 0xfffff6ff`ffffe838 _MMPTE
   +0x010 VolatilePteAddress : 0xfffff6ff`ffffe838 Void
   +0x010 Lock             : 0n-6088
   +0x010 PteLong          : 0xfffff6ff`ffffe838
   +0x018 u3               : <unnamed-tag>
   +0x01c UsedPageTableEntries : 0
   +0x01e VaType           : 0 ''
   +0x01f ViewCount        : 0 ''
   +0x020 OriginalPte      : _MMPTE
   +0x020 AweReferenceCount : 0n0
   +0x028 u4               : <unnamed-tag>
1: kd> !pte 0xfffff6ff`ffffe838
                                           VA ffffffffffd07000
PXE at FFFFF6FB7DBEDFF8    PPE at FFFFF6FB7DBFFFF8    PDE at FFFFF6FB7FFFFFF0    PTE at FFFFF6FFFFFFE838
contains 000000000020F063  contains 00000000001FF063  contains 00000000001FE063  contains 0000000000003163
pfn 20f       ---DA--KWEV  pfn 1ff       ---DA--KWEV  pfn 1fe       ---DA--KWEV  pfn 3         -G-DA--KWEV

换而言之,物理地址/0x1000=页帧数据库所在位置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值