在这里插入代码片
MiIsAddressValid proc near ; CODE XREF: RtlpWalkFrameChain+13Ap
; MmAccessFault-6DB6Dp ...
mov rax, rcx
sar rax, 30h ; 右移0x30,48位
inc rax
cmp rax, 1
ja _unValid ; 1),剩下的16位,位0000,或者ffff;
; +1后,变成1,和0
; 大于1 跳转,高位是其它数据,无效地址
mov rax, rcx
mov rdx, 0FFFFF6FB7DBED000h
shr rax, 27h ; 右移动39位,16+9(PML4)
and eax, 1FFh ; 高的16位设置为0
test byte ptr [rdx+rax*8], 1 ; 2),判断PML4T的p位是否为0
; test xxx,0x01,取第0位
;
; xx
jz short _unValid
mov rax, rcx
mov rdx, 0FFFFF6FB7DA00000h
shr rax, 1Bh ; 右移27位16 9 9 9 9 12
; 本