NTKERNELAPI PVOID NTAPI
ObGetObjectType(
IN PVOID pObject
);
void GetObjectTypeWin7x86()
{
BOOLEAN i = 2;
ULONG j= 2;
ULONG64 ObjectType;
//
while (ObGetObjectType(&i+0xC))
{
ObjectType = ObGetObjectType(&i + 0xC);//C来自于ObGetObjectType反汇编处的eax-0xC win7 x86
KdPrint(("对象类型[%d]=%wZ\n", j, ObjectType+0x8));
i++;
j++;
}
/*获取TypeIndex的值,解释一下为什么是减去0Ch。正常的计算应该是:
object地址-Object_header的大小+TypeIndex的偏移,所以有:
eax-0x18h+0x0Ch 即为 eax – 0x0Ch
82a8f3fe 0fb640f4 movzx eax,byte ptr [eax-0Ch]
根据索引值在ObTypeIndexTable数组中找到对应的ObjectType。
url:http://www.blogfshare.com/win7-obtypeindextable.html
*/
}
void GetObjectTypeWin7x64()//0x18来的原理同上
{
BOOLEAN i = 2;
ULONG j = 2;
ULONG64 ObjectType;
UNICODE_STRING ObjectName;
RtlInitUnicodeString(&Obj