概述
????
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总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复