首页
社区
课程
招聘
[求助]windbg 内核调试相关问题求助
发表于: 2016-6-25 17:46 10831

[求助]windbg 内核调试相关问题求助

2016-6-25 17:46
10831
1. windbg有没有命令枚举所有内核内存页面的访问属性。。。类似于OD枚举进程内存页面的属性。
2. windbg有没有命令可以提取被调试虚拟机内的某个文件

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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
2
对于第一个问题,你可以使用传统的命令  !address ,但该命令的输出结果不太友好,需要一些基础的数据分析功底才能理解;
或者,你可以使用命令  !cmkd.kvas ,它可以列出完整的内核虚拟地址空间布局,
内核虚拟地址空间分成多种类型,比如可换页池,不可换页池,PFN 数据库,系统页表项,驱动程序映像..等等,分别用于相应目的。
在 32位windows 上,内核内存采取动态的分配策略,每次以2MB/4MB为单位分配,并且标记出分配的内核内存块属于哪一类内核虚拟地址空间。注意,同一类内核内存块的分布可能是非连续的。
光讲理论可能难以理解,下面看一看直观的调试器输出:





接下来,你可以用 !pte 命令后接上面输出中的任一虚拟地址,就能获取该虚拟地址映射到的物理页面的访问属性——是Ring3 可读写,还是
Ring0 可读写,是否可以执行。。。等等。如果你想知道 !pte 输出中物理页面的每个标志代表的访问属性含义,可以参考 Intel 的文档。



在上图中,“V” 置位表明页面在内存中(有效),否则在磁盘上(无效),访问无效页面将引发缺页异常从而调用 KiPageFault() ;
“E”置位表明页面包含可执行代码;“W”置位表明页面可写;“K”置位表明页面仅在内核模式(Ring0)下可访问。
上传的附件:
2016-6-25 23:50
1
雪    币: 576
活跃值: (1163)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
这个命令只能用于vista 以后的系统吗?XP内核不支持吗?
2016-6-26 10:55
0
雪    币: 346
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
还不知道一楼说的这个扩展命令。。。
2016-6-26 22:16
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
5
xp Service pack 3 是基于 NT5.2 版的内核,应该不支持,此命令需要在 NT6.1 版内核上使用,比如
windows 7/server 2008/R2 等等。

忘记说了,需要下载第三方的Windbg 调试器扩展DLL(CMKD.dll),可以访问这个站点下载:

http://www.codemachine.com/tool_cmkd.html

下载到本地后,把它放在你的Windbg二进制文件所在的路径下,比如

D:\Windows Kits\10\Debuggers\x86

然后就可以使用这个命令了
2016-6-26 22:45
1
雪    币: 576
活跃值: (1163)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
回答的够认真详细,分给你了
2016-6-27 09:35
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看看再说,不明所以
2016-7-11 18:39
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
喔喔喔,新人不能发帖,没办法,来回帖的
2016-7-11 18:44
0
游客
登录 | 注册 方可回帖
返回
//