WIN7 64位之动态定位ObpRootDirectoryObjct

本文介绍了一种在内核中动态定位目录对象起始位置的方法。通过获取KdDebuggerDataBlock结构的地址,进一步找到ObpRootDirectoryObject,从而定位目录对象。文章详细解释了定位过程,并提供了具体步骤。
摘要由CSDN通过智能技术生成

一 .
关于内核目录对象的基础知识请了解其他作者写的博客,
此文只讲述如何动态定位目录对象的起始位置.
二 .
ObpRootDirectoryObject是内核中的一个地址,这个地址里面存放的第一个64位的数据就为目录对象的起始地址。
在这里插入图片描述
打红圈的是目录对象的起始地址,前面FFFFF80005675590就是ObpRootDirectoryObject的地址,那么如何在内核动态定位ObpRootDirectoryObject的地址呢?

三 .
通过寻找 KdDebuggerDataBlock结构来动态定位,所以要先获取到
KdDebuggerDataBlock结构的地址,这里我们用在函数的方式定位
①KeCapturePersistentThreadState函数(反汇编)
在这里插入图片描述
在这里插入图片描述
图中打红圈的就是KdDebuggerDataBlock结构的地址
②地址定位方法:我们首先获取到fffff800055d771c地址
(方法:fffff800’0563b120=fffff800’055d771c+000639fd+7)
四 .
得到KdDebuggerDataBlock结构的地址进行反汇编观察
在这里插入图片描述
打红圈的就是ObpRootDirectoryObject的地址
注意:KdDebuggerDataBlock结构是没有被定义(高手可以自行反汇编),我们可以把他想象成数组,每个数组元素都是ULONGLONG类型的,那么这个数组中的第20个数就是ObpRootDirectoryObject的地址。
Example:ULONGLONG *KdDebuggerDataBlock;
KdDebuggerDataBlock=KdDebuggerDataBlock的地址;
ObpRootDirectoryObject的地址=KdDebuggerDataBlock[19];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值