2-9-9-12分页模式

admin 2023年10月31日01:19:00评论2 views字数 1522阅读5分4秒阅读模式

什么是2-9-9-12分页模式?

前面介绍了10-10-12分页模式,本篇就来介绍一下另一个分页模式:2-9-9-12分页模式。

首先,我们要先明白一个概念,那就是物理页的大小是确定的,也就是4kb,这个不能随便更改。所以,32位的最后一部分就确定了12位,这个是不能改变的。

那么,在这个前提下,我们要知道,为什么要修改或者说换分页模式?

原因是10-10-12分页的物理地址为4GB,而随着时代的发展4GB的物理地址已经不够用了,因此,为了扩展,所以才会有2-9-9-12的分页模式。

但是可能有人会疑问:32位地址线,不就只能有4GB的物理地址吗?(2的32次方)。这里要说明一下:地址线和物理地址的大小没有任何关系。

而页的大小也确定了,只能是12位,那么如果想要扩大我们的寻址范围,就只能在PTT和PDT上下功夫了。

在前面介绍了。PTT其实也是一个特殊的物理页,他的大小也是4KB,4KB就是4096个字节。因为10-10-12分页模式,PTE是4个字节大小,由于我们的需求是扩大物理页,再加上我们需要考虑对齐的因素,所以,需要时4个倍数,并且比4大,这里就选择8个字节了(其中8字节中只有36位代表执行物理页,因此2的36次方等于64G,这样就扩大了)。4096个字节可以分到512个不同的PTE,而512又是2的9次方,因此PTI=9。那么PTE为8字节了,PDE也需要为8字节,目的就是为了防治PTE有PDE不能指向的地方。因此PDI=9。

32-9-9-12=2。这里还有两个未分配,所以,这就是10-10-12与2-9-9-12分页模式的不同:

2-9-9-12分页模式下,CR3并不是直接指向PDT表,而是指向一张新的表,叫做PDPT表,也叫做页目录指针表。

PDPT表中的每一个成员叫做PDPE(页目录指针表项),每项占8个字节。

PDPT表只有4个成员,因为2位只能满足四种情况。

2-9-9-12分页模式

PDPTE

介绍完2-9-9-12分页模式后,再来介绍一下各个属性,首先我们先来介绍PDPTE的属性:

2-9-9-12分页模式

  • P位:0位,有效位

  • 35-12 存储的是页目录表的基址,低12位补0,共36位,即页目录基址。

  • 灰色部分:保留位

PDE

2-9-9-12分页模式

2-9-9-12分页模式

  • 当PS=1时是大页,35-21位是大页的物理地址,这样36位的物理地址的低21位为0,这就意味着页的大小为2MB,且都是2MB对齐。

  • 当PS=0时,35-12位是页表基址,低12位补0,共36位

PTE

2-9-9-12分页模式

  • PTE中35-12是物理页基址,24位,低12位补0

  • 物理页基址+12位的页内偏移指向具体数据

XD标志位(AMD中称为NX,即No Excetion)

  • 段的属性有可读、可写、可执行

  • 页的属性有可读、可写

  • 当RET执行返回的时候,如果把堆栈里面的数据指向一段提前准备好的数据·(把数据当做代码来执行,漏洞都是依赖这点,比如SQL注入也是),那么就会产生任意代码执行的后果

  • 所以,Intel就在这方面做了硬件保护,设置了一个不可执行位-XD/NX位

  • 当XD=1时,软件产生了溢出也没有关系,即使EIP蹦到了危险的“数据区”,也是不可以执行的

  • 在PAE分页模式下,PDE与PTE的最高位为XD/NX位.在PAE分页模式下,PDE与PTE的最高位为XD/NX位.

实验

在了解概念之后,我们需要通过动手做,来体验一下,还是一样,通过CE找到字符串地址,然后通过windbg来寻找物理页:

2-9-9-12分页模式

  • hello worldDB的线性地址为:0x000AFBF0

拆分:2-9-9-12,需乘8(8字节)

2:000*8=0

9:00 0000 0000*8=0

9:0 1010 1111af*8=0x578

12:BF0

找到CR3:

2-9-9-12分页模式

2-9-9-12分页模式

找到物理页


原文始发于微信公众号(loochSec):2-9-9-12分页模式

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月31日01:19:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2-9-9-12分页模式http://cn-sec.com/archives/2161350.html

发表评论

匿名网友 填写信息