win7sp1x64内存管理
以下数据来源于 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/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 , 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 , 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,
.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,
.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
:lol 上帝无法宽恕我 发表于 2020-10-22 15:36
楼主你好,我的计算机配置是 内存4G,i3-2120,2010年底时候买的,,目前用的是 win7sp1 x64。
最近 ...
C盘空间少了的,可以用diskgenius删除其它的磁盘分区,分配给C盘扩充空间
剩余10G,休眠文件4G,再加一点缓存4G,(内存容间的倍数),C盘几乎没什么空间了
4G内存是足够的,虚拟内存之类的用系统默认设定就可以了,不必要纠结,另外现在都是Ultimate版的满天飞,考虑更新家庭版为Ultimate版,也可能关系不大
我其实更倾向于整个硬盘一个分区,方便快速,分区是DOS时代的产物,方便检索,现在index服务都有了,检索很快,实在不行还有everything,也是秒级检索 不明觉厉!顶一下 看不懂学习了 不明觉厉!顶一下看不懂学习了 学习了一下!不太懂!
先收藏,学习一下!!{:1_921:} 看不懂,不明觉厉!顶一下
也看不懂,不明觉厉!顶一下 不耻下问,敢问大佬,作用何在? 很不明觉厉 系统下载了 这是谁做的 ?
页:
[1]
2