首页
社区
课程
招聘
[求助]MmGetVirtualForPhysical问题
发表于: 2017-6-29 22:49 6757

[求助]MmGetVirtualForPhysical问题

2017-6-29 22:49
6757

用windbg 调试!dq 0x19c000 可以查看内存
PHYSICAL_ADDRESS pa2 = {0};
pa2.QuadPart = 0x19c000;
return MmGetVirtualForPhysical(pa2);
返回0 什么情况


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 145
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
没用过这API 
不过感觉他是获取Physical  Addr对应的Virtual    Addr.   
但你传给他的  0x19c000  不是PA吧
2017-6-30 00:15
0
雪    币: 615
活跃值: (765)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
1,不是所有的物理内存都有映射。所以,MmGetVirtualForPhysical(pa2);返回失败说明这个物理地址没有映射虚拟地址。
2,!dq  0x19c000    为什么这个可以查看到内容。    !dq    其实这个命令不管你物理内存有没有映射,都可以查看,这个命令本身就是查看物理内存。如果这个物理内存没有映射虚拟地址,WINDBG会帮你建立映射。
2017-6-30 07:24
0
雪    币: 581
活跃值: (215)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
ugvjewxf 1,不是所有的物理内存都有映射。所以,MmGetVirtualForPhysical(pa2);返回失败说明这个物理地址没有映射虚拟地址。 2,!dq 0x19c000 为什么这个可以查看到内容。 ...
我就想问问,windbg怎么帮你建立映射?
2017-6-30 10:01
0
雪    币: 12876
活跃值: (9352)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
5
signed  __int64  __fastcall  MmGetVirtualForPhysical(signed  __int64  a1)
{
    return  (a1  &  0xFFF)
              +  ((signed  __int64)((*(_QWORD  *)(48  *  ((a1  >>  12)  -  0x1D55555555i64))  &  0xFFFFFFFFFFFFFFFCui64)  <<  25)  >>  16);
}

这个东西你告诉我怎么返回0。。。
2017-6-30 13:16
0
雪    币: 83
活跃值: (1092)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
hzqst signed __int64 __fastcall MmGetVirtualForPhysical(signed __int64 a1) { return (a1 & 0xFFF) ...
你这个  我也看过  看不懂  就是单步调试  返回0
2017-6-30 16:45
0
游客
登录 | 注册 方可回帖
返回