天天看点

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

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

    • 基本概念
      • 4GB内存空间
      • 有效地址-线性地址-物理地址
        • 有效地址与线性地址
        • 物理地址
      • 控制寄存器:Cr3
    • 10-10-12分页
      • 实验:通过线性地址找到物理地址
        • 第一步:将XP虚拟机设置为10-10-12分页模式
        • 第二步:新建一个记事本,写入"Hello World"
        • 第三步:使用Cheat Engine附加进程
        • 第四步:找到"Hello World"的线性地址
        • 第五步:将线性地址拆分为10-10-12三组比特组
        • 第六步:获得进程的Cr3
        • 第七步:通过Cr3找到字符串的物理地址
          • 第一层
          • 第二层
          • 第三层

基本概念

4GB内存空间

大家可能都听说过,每个程序在运行时,操作系统都会为其分配一段4GB的内存空间。

但是我们的内存容量很可能最多只够为一个进程分配4GB的内存空间,如何做到为每个进程都分配呢?

实际上,进程被分配到的“4GB内存空间”只是虚拟的的内存空间,并不是指真正意义上的物理内存,虚拟内存与物理内存之间有一层转换关系。

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

有效地址-线性地址-物理地址

有效地址与线性地址

先看如下指令:

MOV eax,dword ptr ds:[0x12345678]

其中,0x12345678 是有效地址

ds.Base + 0x12345678 是线性地址

注意:当段寄存器的Base为0时,有效地址=线性地址,大多数时候都是如此;但也有特殊情况,比如fs段寄存器的Base不为0

物理地址

描述:

我们平时所用到的系统DLL(动态链接库)存在于物理地址中,当程序想要调用某个DLL时,DLL便会映射一份线性地址给程序,这样程序就能够通过线性地址找到DLL的物理地址
Windows保护模式学习笔记(六)—— 10-10-12分页

控制寄存器:Cr3

描述:

每个进程都有一个Cr3(准确的说是都有一个Cr3的值,Cr3本身是个寄存器,一个核,只有一套寄存器)

Cr3指向一个物理页,一共4096字节

有关Cr3结构部分将在下一篇详细说明,这里只引入基本概念(实验需要)

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

10-10-12分页

实验:通过线性地址找到物理地址

第一步:将XP虚拟机设置为10-10-12分页模式

右键→我的电脑→属性→高级

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

将noexecute改为execute,保存,重启即可

第二步:新建一个记事本,写入"Hello World"

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

第三步:使用Cheat Engine附加进程

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

第四步:找到"Hello World"的线性地址

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

搜索字符串的时候别忘了勾上Unicode

可以看到左边出现了两个结果,我们可以在记事本中将最后的字符’d’改成’m’来确认哪个才是真正的线性地址

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

线性地址最终确定为:

06765140

第五步:将线性地址拆分为10-10-12三组比特组

0    6    7    6    5    140
=
0000 0110 0111 0110 0101 140
=
0000011001		// 0x19
1101100101		// 0x365
140				// 12个比特位刚好三个字节
           

第六步:获得进程的Cr3

在WinDbg中输入命令:

!process 0 0

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

DirBase的值就是Cr3

第七步:通过Cr3找到字符串的物理地址

注意:

  1. 找第一层和第二层的时候要将索引* 4(每个地址占4个字节)
  2. 每找到一层都要将地址后三位属性位清零再继续找下一层
第一层
Windows保护模式学习笔记(六)—— 10-10-12分页
第二层
Windows保护模式学习笔记(六)—— 10-10-12分页
第三层
Windows保护模式学习笔记(六)—— 10-10-12分页

使用db命令以字符形式查看

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

实验成功!

继续阅读