gpt4 book ai didi

windows - 在 Windows 上修改页表项

转载 作者:可可西里 更新时间:2023-11-01 10:05:34 25 4
gpt4 key购买 nike

对于堆栈地址,我有以下来自 Windgb 的 PDE/PTE 信息:

    kd> !pte 6EFFC 
VA 0006effc
PDE at C0600000 PTE at C0000370
contains 0000000065D39867 contains 0000000000000020
pfn 65d39 ---DA--UWEV not valid
DemandZero
Protect: 1 - Readonly

即使 PTE 无效,WinDBG 如何找到只读状态?如何更改它?必须通过 VAD 完成吗?

最佳答案

如果未设置 PTE 的“valid”位(在您的示例中就是这种情况),则 PTE 由操作系统处理,而不是由 MMU 处理。

在这种情况下,您的 PTE 是软件 PTE(_MMPTE_SOFTWARE 结构;!= _MMPTE_HARDWARE [您可以 'dt' windbg 上的两个结构]),根据位域中设置的位,这可能导致 4 种类型的软件 PTE。

如果位 12 到 31 都是零,那么这是一个“需求零”PTE(因此,不通过 VAD 解析)。位 5 到 9 表示页面保护(0x20 = 第 5 位设置 = 只读)。

保护位没有正式记录,但您可以在网上的某些页面上找到它们的值。取自this reactos page :

#define MM_ZERO_ACCESS         0  // this value is not used. 
#define MM_READONLY 1
#define MM_EXECUTE 2
#define MM_EXECUTE_READ 3
#define MM_READWRITE 4 // bit 2 is set if this is writable.
#define MM_WRITECOPY 5
#define MM_EXECUTE_READWRITE 6
#define MM_EXECUTE_WRITECOPY 7
#define MM_NOCACHE 8
#define MM_DECOMMIT 0x10
#define MM_NOACCESS MM_DECOMMIT|MM_NOCACHE

(注意:请记住,您必须将上述常量左移 5,因为保护位从第 5 位开始)

请参阅这篇博文“Windows Virtual Address Translation and the Pagefile”(尤其是讨论软件 PTE 的部分),以获得关于各种 PTE 的非常好的解释。

关于windows - 在 Windows 上修改页表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com