windows实验之线性地址找物理地址

我们通过ce把记事本里面文本在内存当中的地址找到,这个地址是线性地址。
1676952290267

然后我们把这个十六位地址转换成二进制表示

在我们x86里面有两种方式:10-10-12/2-9-9-12 分页 (两种找法)

000AAC20是十六进制的,我们要先把它转成二进制的:
0000 0000 0000 1010 1010 ;正好20位,后面的C20没必要拆了因为它是属性

前面10位,后面10位:
0000 0000 00
00 1010 1010

C20 ;12位 属性

我们打开WinDbg输入下面的命令:

0: kd> !process 0 0        //查看CR3寄存器


Failed to get VadRoot
PROCESS 89df4788  SessionId: 0  Cid: 04b8    Peb: 7ffde000  ParentCid: 05f8
    DirBase: 0aac0180  ObjectTable: e1e6dc28  HandleCount: 169.
    Image: notepad.exe

DirBase:就是notepad.exe开头在哪里

1676952348151
(这个截图地址和ce不是同一个,还得靠你的想象力了,抱歉)
找到第一层,把后面的3位变成0。
第一层 + 线性地址中间10位4 :8addd000 + 00 1010 10104 = 。。。 每一层4K

1676952367510
(截图地址和ce找的不是同一个,抱歉)
找到第二层,还是把后3位全变成0
第二层 + 线性地址后12位 : xxxxxx + 0xC20 每一层4K

1676952380305
1676952383236
(地址和ce找的不是同一个,抱歉)
cpu就是按照这个公式来找的,这个跟操作系统没有关系。