保护模式(七):2-9-9-12分页

CR3-->PDPT|PDPTE0|-->PDT-->PTT-->物理内存
          |PDPTE1|
          |PDPTE2|
          |PDPTE3|

每个表项十六个字节,结构

PDE/PTE保留位的第一处为XD位,判断该位是否可执行,XD=1时不可执行

实验

测试代码

#include "stdafx.h"
void Test(){
    printf("exec
");
}

int main(int argc, char* argv[])
{
    Test();
    printf("%x
",(unsigned __int32)Test);
    getchar();
    Test();
    getchar();
    return 0;
}

//401005
//00                0*8
//00 0000 010        2*8
//0 0000 0001        1*8
//0000 0000 0101    5
kd> !dq 088401a0
# 88401a0 00000000`0b1e8001 00000000`03069001
kd> !dq 0b1e8000+10
# b1e8010 00000000`0da27067 00000000`00000000
kd> !dq 0da27000+8
# da27008 00000000`0c481025 00000000`09b13025
kd> !dq 0c481000+5
# c481000 cb06e9cc`cccccccc cc0000cd`e1e90000

kd> !ed b1e8014 80000000
kd> !ed da2700c 80000000

(不往下走了) 

原文地址:https://www.cnblogs.com/harmonica11/p/14162387.html