【问题标题】:Windbg - PEB Paged Out (Virtual Page Size Confusion)Windbg - PEB Paged Out(虚拟页面大小混乱)
【发布时间】:2015-12-17 16:23:56
【问题描述】:

谁能给我解释一下这是什么意思。 (我已将相关部分加粗)。

“Start VPN”字段——在本例中为0x37D9BD30——表示起始虚拟页码。这必须通过将其乘以页面大小来转换为实际地址。您可以使用?(评估表达式)命令将此值乘以 0x2000,即示例来自的基于 Itanium 的计算机的页面大小。

kd> ? 37d9bd3e*2000        
Evaluate expression: 7676040298496 = 000006fb`37a7c000

然后可以将范围的大小转换为字节:

kd> ? 37d9bd3e-37d9bd30+1          <--   computes the number of pages
Evaluate expression: 15 = 00000000`0000000f
kd> ? f*2000
Evaluate expression: 122880 = 00000000`0001e000

所以 ExplorerFrame.dll 从地址 0x000006Fb37A7C000 开始,大小为 0x1E000 字节。您可以使用以下方式加载其符号:

kd> .reload /f ExplorerFrame.dll=6fb`37a7c000,1e000

【问题讨论】:

    标签: numbers size virtual windbg


    【解决方案1】:

    页面大小取决于处理器。调用GetSystemInfo() [MSDN] 会为您提供SYSTEM_INFO.dwPageSize 字段中的页面大小。 Wikipedia 提供了执行此操作的代码:

    #include <stdio.h>
    #include <windows.h>
    
    int main(void) {
        SYSTEM_INFO si;
        GetSystemInfo(&si);
    
        printf("The page size for this system is %u bytes.\n", si.dwPageSize);
    
        return 0;
    }
    

    有关可能的页面大小,请参阅 Intel CPU 手册。

    • x86 CPU 可能有 4k(最常见)、2M(支持 PAE)或 4M(不支持 PAE)
    • x64 CPU 可能有 4k(最常见)、2M 甚至 1G 页面。它没有 4M,因为所有 x64 CPU 都支持 PAE
    • Itanium 可能有 4k、8k、64k、256k、1M、4M、16M 或 256M 页面

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-26
      • 2014-11-02
      • 2010-12-10
      • 2011-09-09
      • 2020-12-13
      • 2021-09-15
      • 1970-01-01
      相关资源
      最近更新 更多