我是靠谱客的博主 犹豫白昼,最近开发中收集的这篇文章主要介绍WinDbg x64内核之寻找KdVersionBlock一、_KPCR二、_DBGKD_GET_VERSION64总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

????

Win 10 x64 内核之 寻找KdVersionBlock

  • 一、_KPCR
  • 二、_DBGKD_GET_VERSION64
  • 总结


找这个的目的是什么的就不说了。


提示:以下是本篇文章正文内容,下面案例可供参考

一、_KPCR

由于Windows需要支持多个CPU, 因此Windows内核中为此定义了一套以处理器控制区(Processor Control Region)即KPCR为枢纽的数据结构, 使每个CPU都有个KPCR. 其中KPCR这个结构中有一个域KPRCB(Kernel Processor Control Block)结构, 这个结构扩展了KPCR. 这两个结构用来保存与线程切换相关的全局信息.
其数据结构参见 链接
在这里插入图片描述
首先 看被调试的机器有几个CPU
dd nt!kenumberprocessors l1
有4个
在这里插入图片描述
!pcr 0
在这里插入图片描述
入口在fffff8005a974000
dt _kpcr fffff8005a974000
在这里插入图片描述
网上资料说x86下的K的VersionBlock在0号CPU,其他三个CPU也看了,均没有kdversionblock。可能x64结构发生了变化吧~~~~

百度、google也看了,没有找到,可能是我没搜到罢了。

二、_DBGKD_GET_VERSION64

kdversionblock指向的是一个DBGKD_GET_VERSION64结构。
在这里插入图片描述
我们最想要的就是最后一个DebuggerDataList指向的地址了。

去msdn上看了一下,有发现!
说一下DebuggerDataList指向的数据结构。
参考网上资料。
在这里插入图片描述
该结构体很大,里面有很多未导出的系统变量,所以还是比较有价值的。
在这里插入图片描述
从WinDbg找一下呢,果然找到了,前面是两个指针,前指针和后指针,4字节的tag,4字节的size。
dd nt!KdDebuggerDataBlock
在这里插入图片描述
根据资料,该数据结构除了头部,第一个重要的成员就是内核基址。

ULONG64   KernBase;//第一个
···
ULONG64   PsLoadedModuleList;
···
ULONG64   MmUnloadedDrivers;
ULONG64   MmLastUnloadedDriver;

db fffff8005e800000
在这里插入图片描述
MZ头,插桩都有了,那说明没错了,找到了
这是MmUnloadedDrivers和MmLastUnloadedDriver的地址,再验证一下。
在这里插入图片描述
dd fffff8005f400b20 L380 380是展示多少个字节
在这里插入图片描述


总结

尝试自己动手,也许也可以成功!

最后

以上就是犹豫白昼为你收集整理的WinDbg x64内核之寻找KdVersionBlock一、_KPCR二、_DBGKD_GET_VERSION64总结的全部内容,希望文章能够帮你解决WinDbg x64内核之寻找KdVersionBlock一、_KPCR二、_DBGKD_GET_VERSION64总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部