当前位置:   article > 正文

页帧的寻找_mmpfndatabase

mmpfndatabase

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

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

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

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

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

  1. nt!_MMPFN
  2. +0x000 u1 : <unnamed-tag>
  3. +0x008 u2 : <unnamed-tag>
  4. +0x010 PteAddress : Ptr64 _MMPTE
  5. +0x010 VolatilePteAddress : Ptr64 Void
  6. +0x010 Lock : Int4B
  7. +0x010 PteLong : Uint8B
  8. +0x018 u3 : <unnamed-tag>
  9. +0x01c UsedPageTableEntries : Uint2B
  10. +0x01e VaType : UChar
  11. +0x01f ViewCount : UChar
  12. +0x020 OriginalPte : _MMPTE
  13. +0x020 AweReferenceCount : Int4B
  14. +0x028 u4 : <unnamed-tag>

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

ffffa80`00000000+0x30*3

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/106338
推荐阅读
相关标签
  

闽ICP备14008679号