10-10-12分页限制

10-10-12分页因为页表PEB只有四个字节所以只能访问2^32 = 4GB物理地址空间,现在的物理内存都大于4GB为了能访问到更多的物理内存2-9-9-12将PEB的大小增加到了8个字节,其中36位用来表示物理页基地址,这样就可以访问到2^36 = 64GB物理地址空间。因为一个物理页大小一般为4kb,为了增加页表中PEB的大小,所以页表长度就减小了(10减到9)。

2-9-9-12分页

线性地址的2是页目录指针表PDTPT的索引,9是页目录表PDT的索引,下一个9是页表PTT的索引,下一个12是页内偏移地址。

PDTPT,PDT,PTT的每一项都是八个字节。CR3现在指向的是PDTPT页目录表指针表,0-4位忽略后0-31位表示PDTPT表物理基地址。

PDTPE是页目录指针表项,其0位依然是P有效位,0-35位指向PDT页目录表(0-11位置0)。

PDE的PS位如果为1,表示物理页大小为2^ 21 (9 + 12)= 2MB,最高位XD(NX)位为不可执行位,如果此位为1则此地址的数据不能作为代码执行。G位是全局位(此线性地址为高2GB地址)只有当其PS位为1时才有G位否则无G位,如果为1那么当CR3变化时,不会清除TLB表中此地址对应的项,提高效率。

PTE也有XD不可执行位和G位全局位,注意只要PDE和PTE中其中一个的XD位为1就可以使此地址对应的数据无法执行。其他位都需要与一下。

在3环读写高2GB地址内存

printf("0x%x", (*(DWORD*)0x8003f048));
(*(DWORD*)0x8003f048) = 0x12345678;
printf("0x%x", (*(DWORD*)0x8003f048));

我们在windbg中查看地址0x8003f048线性地址对应的物理地址等信息。

我们在windbg中将PDE和PTE的的U/S位设为1即可读取此高地址的内存

最新文章

  1. 单元测试与Moq
  2. Java面向对象之多态
  3. 基于canvas的前端图片压缩
  4. Swift实战-豆瓣电台(五)播放音乐
  5. Windows环境配置Apache+Mysql+PHP
  6. Windows 7的100M隐藏分区
  7. JSON (仅限本地)
  8. Programming Collective Intelligence
  9. 在JAVA中开发应用之html5离线应用
  10. 谈论HashMap,HashSet,HashTableeasy被我们忽视
  11. WIN10使用管理员权限运行VS2013
  12. Python的json and pickle序列化
  13. python decorator 进阶
  14. Oracle 执行计划(二)------表访问的几种方式
  15. json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
  16. Linux下Tomcat项目启动报错
  17. IDEA项目搭建一——使用Maven创建多模块项目
  18. robot framework —— 变量文件
  19. 正则表达式学习之grep,sed和awk
  20. linux没有那个文件或目录

热门文章

  1. C语言之简易了解程序环境
  2. Django 模板 render传参不转码
  3. Vue 中的 mixin,component,render,hoc
  4. dubbo的spi思想是什么?
  5. 【2w字干货】ArrayList与LinkedList的区别以及JDK11中的底层实现
  6. 《TCP/IP网络编程》学习笔记整理
  7. HUAWEI防火墙双出口根据链路优先级主备备份
  8. Day01_01_java背景
  9. 面试系列<5>——面向对象
  10. 腾讯云TCA开发工程师认证考试