好友
阅读权限10
听众
最后登录1970-1-1
|
以下数据来源于 cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso (3.19 GB)
pte 起始地址 ffff f680 0000 0000 (逆向MmIsAddresseValid)
ffff f680 0000 0000 >> 12 =f ffff 6800 0000
(x(pte的虚拟地址)-ffff f680 0000 0000) / 8 *0x1000 = VA(此进程任意一个虚拟地址)
x64的进程都有2^64虚拟地址空间
页表的作用就是表明进程空间中可用的虚拟地址被映射在哪片物理地址
原理:(x-ffff f680 0000 0000)/8*0x1000 = (ffff f680 0000 0000&0xffffffffffff) 前16位清0
算出映射pte的地址(即pde起始地址)用 (一开始用计算器移位,没注意输入的位数是16进制的,希望大家注意一下)
公式:
_PTE_BASE =(((虚拟地址 & 0xffffffffffff) >> 12)) << 3) + g_PTE_BASE)
g_PDE_BASE=(((虚拟地址 & 0xffffffffffff) >> 21)) << 3) + g_PDE_BASE)
g_PPE_BASE=(((虚拟地址 & 0xffffffffffff) >> 30)) << 3) + g_PPE_BASE)
g_PXE_BASE=(((虚拟地址 & 0xffffffffffff) >> 39)) << 3) + g_PXE_BASE)
按上述方法依次得到
存储 PTE 的页面:FFFFF680`00000000
存储 PDE 的页面:FFFFF6FB`40000000
存储 PPE 的页面:FFFFF6FB`7DA00000
存储 PXE 的页面:FFFFF6FB`7DBED000
参考https://www.cnblogs.com/xuanyuan/p/5260871.html
.text:00000001400BB670 MiIsAddressValid proc near ; CODE XREF: MmAccessFault-78AFA↑p
.text:00000001400BB670 ; MiDeprioritizeVARange+D6↑p ...
.text:00000001400BB670 mov rax, rcx
.text:00000001400BB673 sar rax, 48
.text:00000001400BB677 inc rax
.text:00000001400BB67A cmp rax, 1
.text:00000001400BB67E ja loc_1400BB713 ; 根据前16位简单判断一下地址的有效性(0000或ffff)
.text:00000001400BB684 mov rax, rcx
.text:00000001400BB687 mov rdx, 0FFFFF6FB7DBED000h
.text:00000001400BB691 shr rax, 39 ; 取pml4的偏移
.text:00000001400BB695 and eax, 1FFh ; 低9位不变,高位全部置0
.text:00000001400BB69A test byte ptr [rdx+rax*8], 1 ; 判断最后一位,P位
.text:00000001400BB69E jz short loc_1400BB713 ; P位为0,也就是页面置换在文件中,直接返回0
.text:00000001400BB6A0 mov rax, rcx
.text:00000001400BB6A3 mov rdx, 0FFFFF6FB7DA00000h
.text:00000001400BB6AD shr rax, 27 ; 取pdpt的偏移
.text:00000001400BB6B1 and eax, 1FFFF8h
.text:00000001400BB6B6 test byte ptr [rax+rdx], 1
.text:00000001400BB6BA jz short loc_1400BB713
.text:00000001400BB6BC mov rdx, 904C0000000h
.text:00000001400BB6C6 mov rax, rcx
.text:00000001400BB6C9 shr rax, 18 ; 取pdt的偏移
.text:00000001400BB6CD and eax, 3FFFFFF8h
.text:00000001400BB6D2 sub rax, rdx
.text:00000001400BB6D5 mov rdx, [rax]
.text:00000001400BB6D8 test dl, 1
.text:00000001400BB6DB jz short loc_1400BB713
.text:00000001400BB6DD test dl, dl
.text:00000001400BB6DF js short loc_1400BB716
.text:00000001400BB6E1 shr rcx, 9
.text:00000001400BB6E5 mov rax, 7FFFFFFFF8h
.text:00000001400BB6EF and rcx, rax
.text:00000001400BB6F2 mov rax, 98000000000h
.text:00000001400BB6FC sub rcx, rax
.text:00000001400BB6FF mov rax, [rcx]
.text:00000001400BB702 test al, 1
.text:00000001400BB704 jz short loc_1400BB713
.text:00000001400BB706 mov r8b, 80h
.text:00000001400BB709 and al, r8b
.text:00000001400BB70C cmp al, r8b
.text:00000001400BB70F setnz al
.text:00000001400BB712 retn
|
免费评分
-
参与人数 2 | 吾爱币 +6 |
热心值 +1 |
收起
理由
|
上帝无法宽恕我
| + 1 |
|
估计石沉大海,毕竟不是什么问题都会给到满意回复,甚至不回复。阿门 |
苏紫方璇
| + 5 |
+ 1 |
欢迎分析讨论交流,吾爱破解论坛有你更精彩! |
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|