
保护模式-页
CPU对于页的保护
qq_857305819
这个作者很懒,什么都没留下…
展开
-
2-9-9-12分页
2(页目录指针表的索引) 9 (PDI) 9(PTI) 12(物理页的偏移)PDT 和PTT相当于数组,PDE PDT就是数组里面每一项的值 PDI就是PDE在数组内的索引。PTI也是一样的道理、为了实现突破4GB寻址,PTE变成了8字节,可寻址范围也变成了FFFFFFFF FFFFFFFF ,那么PDE也必须是4字节位,因为如果PDE是4字节,而PTE超过4GB的时候就找不到PET了...原创 2020-04-12 19:16:28 · 925 阅读 · 0 评论 -
给0地址挂载物理页实现读取和写入
10 10 12分页模式下// readPageAttr.cpp : 定义控制台应用程序的入口点。//调用门段描述符 0041ec00`000813c0#include "stdafx.h" DWORD PDE=0; DWORD PTE=0; DWORD dwPDT_Index=0; DWORD dwPTT_Index=0; DWORD dwPageIndex=0; DW...原创 2020-04-10 20:52:23 · 1178 阅读 · 0 评论 -
保护模式阶段测试
第一题代码说说思路吧,如果给出的线性地址+读取的长度没有超过0x1000。那么这种情况很好处理,判断PDE和PTE的p都为1就行了如果超过了1页,把线性地址加上0x1000那么这个值肯定就对应下一个物理页了。再次判断一下PDE和PTE的p位,注意下细节就好了。// readPageAttr.cpp : 定义控制台应用程序的入口点。//调用门描述符 eq 8003f048 0041ec00...原创 2019-05-05 16:00:29 · 678 阅读 · 0 评论 -
PDC/PWT
原创 2019-05-05 16:00:08 · 195 阅读 · 0 评论 -
控制寄存器
原创 2019-05-05 15:52:42 · 944 阅读 · 0 评论 -
中断与异常
原创 2019-05-05 15:37:17 · 132 阅读 · 0 评论 -
TLB
TLB记录的是线性地址对应的物理页,而不是具体的物理页里面的偏移,这样可以记录更多的内容。PDT PTT的G位INVLPG指令删除线性地址对应的物理页的TLB缓存...原创 2019-05-05 15:01:06 · 432 阅读 · 0 评论 -
页目录表基址-页表基址
!vtop指令!vtop+cr3 +线性地址WINDBG就可以得到PDT PTT 和对应的物理页PDT表基址线性拆分进程的线性地址0XC0300000CR3=32d29000直接使用CR3找出PDT表结论:这就说明了0XC0300000线性地址对应的物理地址,就是PDT表要在代码里面修改PDE就可以用这个地址(代码只能访问线性地址,CR3里面的属于物理地址,只能CPU访问);...原创 2019-05-04 22:18:15 · 750 阅读 · 0 评论 -
PDE_PTE属性
PDE 与PTE的P位同时为1,物理地址才有效。实验 修改0x8003F00C属性修改PDE PTE的U/S位为1原创 2019-05-04 12:46:58 · 659 阅读 · 0 评论 -
PDE与PTE
PDT 页目录表(大小4KB),4GB内存被分成1024*1024个页,每一页的大小是4kb。PTT 页表 (大小4KB),页表里面是页表项,记录的是页的开始位置。PDE就是页表的基址。PTD是页的基址。CR3里面存放的PDT是物理地址,代码无法访问,要访问PDT的基址用C0003000实验 向0地址写入数据实验代码#include "stdafx.h"#include &...原创 2019-05-03 22:22:40 · 2665 阅读 · 1 评论 -
页的机制
10-10-12分页模式第一级有一张表 大小是1024,CPU通过CR3里面存的物理地址+第一个10位的值得到第一级里面的值。第二级有1024个表,每个表的大小是1024字节。通过第二个10位+第一级里面的值 得到第二级的值找到具体的页最后通过低12位得到在具体页的位置的物理页。实验找物理页1:通过CE找到字符串的线性地址 B1B382:拆分 0 B1 B383:先得到...原创 2019-05-03 04:01:53 · 187 阅读 · 0 评论