windows内核中对于索引*4(内存)的一个反汇编知识点

今天在分析Windows内核的MmIsAddressValid函数中发现了一个计算策略。

10-10-12分页中,我们按照常规应该取10位,即右移22位,然后乘以4来获取索引

但是反汇编代码中的做法是右移20位,然后后两位清零,这样仍然会得到*4的索引


mov ecx, [ebp+VirtualAddress]
mov eax, ecx
shr eax, 14h ; 右移20位获取PDE在CR3表中的索引
mov edx, 0FFCh
and eax, edx
sub eax, 3FD00000h ; C0300000+eax
mov eax, [eax] ; 拿到PDE值

之前还很疑惑其为啥要这么做,分析后感觉这样更符合计算机的思维。

标签: windows, mov, eax, 索引, 反汇编, 知识点, 右移

相关文章推荐

添加新评论,含*的栏目为必填