Windows保护模式学习笔记(八)—— 页目录表基址/页表基址

  • 要点回顾
  • 一、页目录表基址
    • 实验:拆分线性地址C0300000,并查看其对应的物理页
      • 第一步:打开一个进程,获得它的Cr3
      • 第二步:查看进程的PDT表
      • 第三步:拆分线性地址
      • 第四步:查看线性地址对应的物理页
    • 实验总结
  • 二、页表基址
    • 实验:拆分线性地址C0000000,并查看其对应的物理页
      • 第一步:打开一个进程,获得它的Cr3
      • 第二步:查看进程的PDT表
      • 第三步:拆分线性地址
      • 第四步:查看线性地址指向的PDE所对应的PTT表
      • 第五步:查看线性地址C0001000对应的PTT表
    • 实验总结
  • 总结

要点回顾

在上一节课课后题中我们提到过,如果系统要保证某个线性地址是有效的,那么必须为其填充正确的PDEPTE

如果我们想填充PDE与PTE,那么必须能够访问PDTPTT,这样就存在2个问题:

  1. 一定已经有“人”为我们访问PDT与PTT挂好了PDE与PTE,我们只用找到这个线性地址就可以了
  2. 这个为我们挂好PDE与PTE的“人”是谁?

注意:
CR3中存储的是物理地址,不能在程序中直接读取的。如果想读取,也要把Cr3的值挂到PDT和PTT中才能访问,那么怎么通过线性地址访问PDT和PTT呢?

注意:以下所有实验的分页方式均为10-10-12分页

一、页目录表基址

页目录表基址 = 线性地址:C0300000

实验:拆分线性地址C0300000,并查看其对应的物理页

第一步:打开一个进程,获得它的Cr3

我这里打开的是notepad.exe

第二步:查看进程的PDT表


注意PDT表中的数据

第三步:拆分线性地址

 十六进制:C0300000
=二进制:1100 0000 001100 0000 000000 0000 0000
=十六进制:300300000

第四步:查看线性地址对应的物理页

注意:若不知道怎么查找物理页可以翻看前两篇笔记

可以发现 物理页的内容PDT表的内容 完全相同

实验总结

  1. 线性地址C0300000对应的物理页就是页目录表
  2. 这个物理页即页目录表本身也是页表
  3. 这个物理页是一张特殊的页表,每一项PTE指向的不是普通的物理页,而是指向其它的页表
  4. 访问页目录表的公式:C0300000 + PDI*4(I=index)

结构图如下:

二、页表基址

页表基址 = 线性地址:C0000000

实验:拆分线性地址C0000000,并查看其对应的物理页

第一步:打开一个进程,获得它的Cr3

我这里打开的是notepad.exe

第二步:查看进程的PDT表


查看前三个PDE所对应的PTT表

第一张PTT表:

第二张PTT表:

第三张PTT表:

第三步:拆分线性地址

 十六进制:C0000000
=二进制:1100 0000 000000 0000 000000 0000 0000
=十六进制:300000000

第四步:查看线性地址指向的PDE所对应的PTT表


查看前三个PTE所对应的物理页

第一张物理页:

第二张物理页:

第三张物理页:

可以发现 每一项PTE所指向的物理页的内容每一个PDE所指向的PTT表的内容完全相同

第五步:查看线性地址C0001000对应的PTT表


发现线性地址C0001000指向的PTT表的第一项PTE线性地址C0000000指向的PTT表的第二项PTE

实验总结

  1. 页表被映射到了从0xC0000000~0xC03FFFFF4M地址空间
  2. 在这1024个表中有一张特殊的表:页目录表
  3. 页目录被映射到了0xC0300000开始处的4K地址空间
  4. 访问页表的公式:0xC0000000 + PDI*4096 + PTI*4(I=index)

结构图如下:

总结

  1. 有了0xC0300000和0xC0000000能做什么:
    掌握了这两个地址,就掌握了一个进程所有的物理内存读写权限
  2. 公式总结:
    访问页目录表的公式:C0300000 + PDI*4(I=index)
    访问页表的公式:0xC0000000 + PDI*4096 + PTI*4(I=index)

Windows保护模式学习笔记(八)—— 页目录表基址/页表基址相关推荐

  1. Windows保护模式学习笔记(十二)—— 控制寄存器

    Windows保护模式学习笔记(十二)-- 控制寄存器 控制寄存器 Cr0寄存器 Cr2寄存器 Cr4寄存器 控制寄存器 描述: 控制寄存器有五个,分别是:Cr0 Cr1 Cr2 Cr3 Cr4 Cr ...

  2. Windows保护模式学习笔记(九)—— 2-9-9-12分页

    Windows保护模式学习笔记(九)-- 2-9-9-12分页 要点回顾 10-10-12分页 原理 环境配置 2-9-9-12分页 原理 PDPTE PDE PTE XD/NX标志位 环境配置 实验 ...

  3. Windows保护模式学习笔记(七)—— PDEPTE

    Windows保护模式学习笔记(七)-- PDE&PTE Cr3 PDE(页目录表项) PTE(页表项) 物理页的属性 10-10-12分页的补充 实验1:证明PTE的特征1 第一步:选择一个 ...

  4. Windows保护模式学习笔记(十四)—— 阶段测试

    Windows保护模式学习笔记(十四)-- 阶段测试 题目一 解题步骤 题目二 解题步骤 题目一 描述:给定一个线性地址,和长度,读取内容 int ReadMemory(OUT BYTE* buffe ...

  5. Windows保护模式学习笔记(十三)—— PWTPCD

    Windows保护模式学习笔记(十三)-- PWT&PCD 要点回顾 CPU缓存 CPU缓存与TLB的区别 PWT(Page Write Through) PCD(Page Cache Dis ...

  6. Windows保护模式学习笔记(十)—— TLB

    Windows保护模式学习笔记(十)-- TLB 地址解析 10-10-12分页 2-9-9-12分页 TLB TLB结构 TLB种类 练习1:体验TLB的存在 第一步:运行代码 第二步:设置中断门描 ...

  7. Windows保护模式学习笔记(六)—— 10-10-12分页

    Windows保护模式学习笔记(六)-- 10-10-12分页 基本概念 4GB内存空间 有效地址-线性地址-物理地址 有效地址与线性地址 物理地址 控制寄存器:Cr3 10-10-12分页 实验:通 ...

  8. Windows保护模式学习笔记(一)—— 段寄存器GDT表

    Windows保护模式学习笔记(一)-- 段寄存器&GDT表 保护模式 参考书籍: 一.段寄存器 段寄存器的结构 段寄存器的读写 段寄存器的属性 1)探测Attribute: 2)探测Base ...

  9. Windows保护模式学习笔记(五)—— 任务段任务门

    Windows保护模式学习笔记(五)-- 任务段&任务门 要点回顾 任务段 TSS (Task-state segment ) TR段寄存器 TR段寄存器的读写 TSS段描述符 实验:加载自定 ...

最新文章

  1. Java 理论与实践: 非阻塞算法简介——看吧,没有锁定!(转载)
  2. mysql修改配置文件内存后无法启动_记一次Oracle实例在修改内存大小后无法启动的惊悚经历...
  3. PHP带头大哥谈程序语言的学习体会!
  4. Python Extension
  5. 【时间序列预测】基于matlab LMS麦基玻璃时间序列预测【含Matlab源码 1443期】
  6. 1-JavaScript高级程序设计-简介
  7. 综合能源管理服务认证是什么 , 综合能源服务认证有什么要求?
  8. 荐一个不错的UI设计网站: uimaker
  9. 软件设计师2021考试大纲
  10. 微信小程序上线审核流程
  11. Wordpress主题制作基础教程
  12. 探讨广东技术师范大学Windows下MentoHUST上网认证
  13. CoinCola研究院 | 从技术的角度解读BCH分叉升级
  14. linux执行arm文件,Linux安装FFMPEG转换amr为mp3格式
  15. win10系统安装jdk8,并且配置环境变量教程
  16. 西门子博途1200码垛机、立体仓库程序(带注释),程序应用到 变频器、触摸屏、步进电机、工业机器人、视觉相机。
  17. 王者荣耀服务器什么时候维护结束,王者荣耀维护更新到几点 王者荣耀今天维护多久 新赛季几点维护完?...
  18. 数控铣削图案及编程_数控铣床漂亮编程图案 数控铣床编程100例
  19. Mac磁盘分析工具ncdu使用
  20. java 多态应用 编写 LOL商店英雄购买

热门文章

  1. AI:2020年6月22日北京智源大会演讲分享之09:50-10:40 Anil教授《Pattern Recognition: Statistics to Pattern Recognition》
  2. Dataset之iGAN:iGAN数据集的简介、安装、使用方法之详细攻略
  3. Funny:还是程序猿会玩——弹幕炸天学AI和区块链,玩起来!弹慕君,你也值得拥有!
  4. sklearn中的回归决策树
  5. 通用PE工具箱安装图解
  6. Pycharm运行时找不到文件问题
  7. BLE安全机制从入门到放弃
  8. c++新特性11 (10)shared_ptr一”概述“
  9. 在 Eclipse 上建立一个 JSP
  10. 形式化方法、《大象:Thinking in UML》