10-10-12 分页实验
在代码中直接读取高2G的内存地址会报错,当然我们可以通过调用门、中断门等提权读取,不过今天我们直接修改页的属性,在3环环境中也可以直接读取
拆分地址0x8003F00C : PDI(0x200) PTI(0x03F) 物理页偏移 (0x00C)
当代码执行到getchar()的时候,可以WinDbg中修改该对应页的属性值 : U/S 位改为 1 G位改为 0 (防止TLB缓存,不改这个也可以成功,但是有概率会失败的哦~~~)
return 0 的地方记得下断点,不然打印的值你看不到了
winDbg执行g,回到代码按F5向下执行,发现可以获取值
2-9-9-12 分页实验(PAE)
需要修改C盘下boot.ini文件
execute是10-10-12分页模式,noexecute是2-9-9-12分页模式,修改后需要重新启动电脑才会生效
如果你使用的是Oracle VM VirtualBox ,还需要勾上该选项
2-9-9-12 模式拆分地址
拆分地址0x8003F00C : PDPTI(0x2) PDI(0x0) PTI(0x03F) 物理页偏移 (0x00C)
PDPTE结构
PDE结构
PTE结构
==因为PAE分页模式的每个表项都是8个字节,使用winDbg修改的时候需要 x 8 ==
winDbg执行g,回到代码按F5向下执行,发现可以获取值
动手做实验才能够体会,光看是没有用的哦~~~~