抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

页表基址

知识点

线性地址和物理地址是一对一映射关系, 等价映射;

每个进程在高地址中有4兆空间是不共享的, 他指向的是本进程的PDE和PTE;

判断一个线性地址是否有效?

  1. 如果是PDE.p = 1并且PS=1, 那么有效
  2. 如果PDE.p=1 PS=0, PTE.p=1 PTE.PAT=0, 有效

101012下页表基址计算

  • 汇编代码

    MiIsAddressValid(线性地址有效性验证函数)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    .text:0048DBB8                 mov     eax, ecx
    .text:0048DBBA shr eax, 14h ; 右移动 20位 eax >> 20
    .text:0048DBBD and eax, 0FFCh ; (eax >> 20) & ffc
    .text:0048DBC2 sub eax, 3FD00000h
    .text:0048DBC7 mov eax, [eax] ; C0300000是一个起始地址
    .text:0048DBC9 test al, 1
    .text:0048DBCB jnz short loc_48DBD0
    .text:0048DBCD
    .text:0048DBCD loc_48DBCD: ; CODE XREF: MiIsAddressValid(x,x)+32↓j
    .text:0048DBCD xor al, al
    .text:0048DBCF retn
    .text:0048DBD0 ; ---------------------------------------------------------------------------
    .text:0048DBD0
    .text:0048DBD0 loc_48DBD0: ; CODE XREF: MiIsAddressValid(x,x)+13↑j
    .text:0048DBD0 test al, al
    .text:0048DBD2 jns short loc_48DBD7 ; 判断是否是大页
    .text:0048DBD4 mov al, 1
    .text:0048DBD6 retn
    .text:0048DBD7 ; ---------------------------------------------------------------------------
    .text:0048DBD7
    .text:0048DBD7 loc_48DBD7: ; CODE XREF: MiIsAddressValid(x,x)+1A↑j
    .text:0048DBD7 shr ecx, 0Ah
    .text:0048DBDA and ecx, 3FFFFCh
    .text:0048DBE0 sub ecx, 40000000h ; C0000000
    .text:0048DBE6 mov eax, [ecx]
    .text:0048DBE8 test al, 1 ; PTE
    .text:0048DBEA jz short loc_48DBCD
    .text:0048DBEC and al, 80h
    .text:0048DBEE cmp al, 80h
    .text:0048DBF0 setnz al
    .text:0048DBF3 retn

C0300000 PDE基址
C0300000 + ((线性地址 >> 0x14) & 0xFFC)

C0000000 PTE基址
C000000 + ((线性地址 >> 0xA) & 0x3FFFFC)

PAE

最大能支持36根地址总线
2^32 = 4G
2^33 = 4G * 2 = 8G
2^36 = 4G*2^4 = 64G

2-9-9-12分页

  1. 2^2 = 4, 有4种(00, 01, 10, 11), 所以CR3是以0x20来递增的;

作业

  1. 2-9-9-12拆法;
  2. 逆向分析2-9-9-12分页模式下内核函数MmIsAddressValied;
  3. 通过调用门进入R0修改高2G的所有PDE、PTE的u/s位, 然后返回应用层访问高地址, 分页模式10-10-12;

评论