首页
社区
课程
招聘
[求助]Win7 64 MiIsAddressValid函数的疑问
发表于: 2022-6-22 23:06 6638

[求助]Win7 64 MiIsAddressValid函数的疑问

2022-6-22 23:06
6638

今天在看MiIsAddressValid函数时碰到一奇怪的地方
看它计算PXE的偏移时一切正常 右移39位 得到PXE的Index(内核地址还有FFFF) 然后使用1FF 把头部的FFFF给去掉保留index 之后index×8+PXEbase 得到PXE的线性地址
然后在看计算PPE的时候就奇了怪了
先右移27位(>>30 ×8) 头部保留了FFFF(如果是内核地址) 完事直接and 1ffff8
这个8可以想到是为了对齐*8后计算出的偏移 那么往前在推8位得到pxe的偏移(ff8) 那么剩余的这个1ff该如何理解呢? 这边计算的不应该是PPE的offset么? 为什么会and 1ffff8 而不是ff8 呢?
图片描述


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 2
支持
分享
最新回复 (2)
雪    币: 24
活跃值: (576)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好像知道咋回事了 这个base不是某个线性地址求出来的base  而是某个进程整体上的base  从一开始就想错了
2022-6-22 23:29
0
雪    币: 46
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
2023-1-8 22:30
0
游客
登录 | 注册 方可回帖
返回
//