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
(不往下走了)