Win7 _Object_header 中的 TypeIndex

Win7 比较 xp下ObjectHeader中的内容有所变化,xp直接在OBJECT_HEADER里保存了POBJECT_TYPE指针,而Win7中把所有的对象类型放在了一个表里,这个表叫做ObTypeIndexTable。可以这么定义为:

POBJECT_TYPE ObTypeIndexTable[0x100];

Win7的对象头中不再保存ObjectType指针,而是保存了TypeIndex,也就是对象类型在该表中的索引,并且提供了一个函数ObGetObjectType。需要取得对象类型时直接使用导出函数ObGetObjectType就可以得到对应的对象类型了,反而比以前方便。
该函数非常简单,还原成代码如下:

POBJECT_TYPE 
ObGetObjectType(
    IN PVOID Object)
{
    POBJECT_HEADER ObjectHeader=OBJECT_TO_OBJECT_HEADER(Object);
    return ObTypeIndexTable[ObjectHeader->TypeIndex];
}

代码很简单,传入一个对象,取对象头中的TypeIndex作为索引,然后返回ObTypeIndexTable中对应的值。
一个简单的获取所有对象类型指针的方法就是:从ObGetObjectType中取ObTypeIndexTable遍历即可

kd> dd ObTypeIndexTable
83f7c900  00000000 bad0b0b0 86344768 863446a0
83f7c910  863445d8 863e2040 863e2f00 863e2e38
83f7c920  863e2d70 863e2ca8 863e2be0 863e2528
83f7c930  863fe418  863fe350 86405040 86405208
83f7c940  86405140 864092f8 86409230 86409168
83f7c950  863ffc90   863ffbc8 863ffb00 863ffa38
83f7c960  863ff970   863ff8a8 863ff7e0 863ff718
83f7c970  863ff650   86406f78 86406eb0 86406de8
原文地址:https://www.cnblogs.com/lanrenxinxin/p/4671083.html