论坛首页 逆向工程技术区 阅读主题

[原创]物理读写/无附加读写实验

455 浏览 18 回复
#1 楼主 2026-06-01 21:08:57
正常的读写方式为附加读写,通过进程挂靠到目标环境上下文进行读写;或者奇技淫巧读写。如:MmCopyMemory虚拟地址;mdl强读;切cr3读写;直接附加读写;傀儡进程读写
物理读写则是手动解析页表,直接读写物理内存。即从CR3寄存器->物理内存。因为是算法解析,不存在附加一说(不能通过查apc检测)。

在这种分页方式下物理地址最多可达4GB。但随着硬件的发展,4GB的物理地址范围已经无法满足要求  

2-9-9-12分页是32位下分页的扩展 ,可以访问最高64GB物理内存
描述:随着计算机技术的发展,64位系统逐渐占据主流地位,那么也就表示CPU的最大寻址范围为64位。但实际上,CPU只使用了其中的48位用于寻址,并使用9-9-9-9-12分页模式。即便如此,在未来较长一段时间里,48位寻址范围也足够大部分人的日常使用了。  9-9-9-9-12 分页机制理论上支持超大物理地址空间,但实际最大可访问物理内存由 CPU 的 ‌MAXPHYADDR‌ 位数决定,典型值为 36 位(64GB)、40 位(1TB)或更高(如 52 位/4PB‌)

这四级页表分别称为PML4E、PDPTE、PDE、PTE
RW位 读写  物理页的属性=PDE属性& PTE属性  US=0 内核 US=1用户 PDE属性& PTE属性PWT – 页表缓冲写入机制,为 0 表示 write-back 模式,更新页表缓冲区时,只标记为已更新,不同步写内存,只有被新进入的数据取代时才更新到内存,为 1 表示 write-through 模式,更新页表缓冲区时,同步写内存,保证缓冲区与内存一致PCD – 是否拒绝被缓冲,为 0 表示可以被缓冲,为 1 表示不可以被缓冲A 位 – 是否被访问,CPU 会在访问到页面时将该位置 1,但不会清除,只有软件可以将 A 位复位D 位 – 是否被写入,CPU 会在写入页面时将该位置 1,但不会清除,只有软件可以将 D 位复位PS – PDE特有,页大小位,为 0 表示页大小为 4KB,且 PDE 指向页表,为 1 表示页大小为 4MB,且 PDE 指向 4MB 的整块内存PAT – 奔腾3以后的 CPU 引入的页属性表标识位,为 1 开启页属性表后,通过一系列专用寄存器(MBR)为每个页提供了详细的属性设置G 位 – 全局位,也称为脏位,如果该位与 CR4 寄存器的 PGE 位同时被置为 1,则该页或页目录项将不会在 TLB 中被逐出
CR3 是 x64 架构的关键控制寄存器,64 位宽,其结构按功能划分为以下字段3.分页机制入口‌4.进程地址空间隔离‌5.TLB 管理‌
测试代码运行CR3:14e4cd000    保留位清零‌
CR3 的低 12 位为保留位(未启用 PCID 时),必须置 0。&= ~0xf 显式清除低 4 位,避免硬件未定义行为但是本来就是0这里就不清了0X000000000014FD140x14FD14 的二进制表示为:000 101001111 110100010100为了得到48位,我们在前面补24个0,所以完整的48位虚拟地址是:9-9-9-9-12000000000   000000000 000000000  101001111  110100010100plm4:0


回复或点赞可查看完整内容

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-287678.htm
#2 2026-06-01 21:08:57
感谢分享
#3 2026-06-01 21:08:57
感谢分享
#4 2026-06-01 21:08:57
感谢分享
#5 2026-06-01 21:08:57
感谢分享
#6 2026-06-01 21:08:57
看下内容
#7 2026-06-01 21:08:57
学习学习看下
#8 2026-06-01 21:08:57
学习学习看下
#9 2026-06-01 21:08:57
学习学习看下
#10 2026-06-01 21:08:57
学习学习看下
#11 2026-06-01 21:08:57
感谢分享 学习
#12 2026-06-01 21:08:57
看看
#13 2026-06-01 21:08:57
学习学习看下
#14 2026-06-01 21:08:57
你的帖子非常有用,感谢分享!
#15 2026-06-01 21:08:57
学习学习
#16 2026-06-01 21:08:57
详细
‹ 上一页 1 2 下一页 ›

请登录后参与讨论

立即登录 注册账号