请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

梦织未来

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1418|回复: 2

[求助] 为什么枚举ObpTypeObjectType只有两条记录?

[复制链接]

升级   26%

3

主题

0

精华

13

积分
发表于 2017-1-8 22:02:10 | 显示全部楼层 |阅读模式
  1. #include <ntddk.h>


  2. VOID DriverUnload(PDRIVER_OBJECT pDriverObj){
  3.         return;
  4. }

  5. typedef struct _OBJECT_TYPE_INITIALIZER{
  6.         USHORT Length;
  7.         UCHAR UseDefaultObject;
  8.         UCHAR CaseInsensitive;
  9.         ULONG InvalidAttributes;
  10.         ULONG GenericMapping[4];
  11.         ULONG ValidAccessMask;
  12.         UCHAR SecurityRequired;
  13.         UCHAR MaintainHandleCount;
  14.         UCHAR MaintainTypeList;
  15.         ULONG PoolType;
  16.         ULONG DefaultPagedPoolCharge;
  17.         ULONG DefaultNonPagedPoolCharge;
  18.         ULONG DumpProcedure;
  19.         ULONG OpenProcedure;
  20.         ULONG CloseProcedure;
  21.         ULONG DeleteProcedure;
  22.         ULONG ParseProcedure;
  23.         ULONG SecurityProcedure;
  24.         ULONG QueryNameProcedur;
  25.         ULONG OkayToCloseProcedure;
  26. }OBJECT_TYPE_INITIALIZER;

  27. typedef struct _OBJECT_TYPE{

  28.         CHAR Mutex[0X38];
  29.         LIST_ENTRY TypeList;
  30.         UNICODE_STRING Name;
  31.         PVOID DefaultObject;
  32.         ULONG Index;
  33.         ULONG TotalNumberOfObjects;
  34.         ULONG TotalNumberOfHandles;
  35.         ULONG HighWaterNumberOfObjects;
  36.         ULONG HighWaterNumberOfHandles;
  37.         OBJECT_TYPE_INITIALIZER TypeInfo;
  38.         ULONG Key;
  39. }OBJECT_TYPE, *POBJECT_TYPE;

  40. typedef struct _OBJECT_HEADER_CREATOR_INFO{
  41.         LIST_ENTRY TypeList;
  42.         PVOID CreatorUniqueProcess;
  43.         USHORT CreatorBackTraceIndex;
  44.         USHORT Reserved;
  45. }OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO;

  46. PVOID GetObCreateObjectType(){
  47.         UNICODE_STRING ustrObCreateObjectType = { 0 };
  48.         RtlInitUnicodeString(&ustrObCreateObjectType, L"ObCreateObjectType");
  49.         PVOID temp = MmGetSystemRoutineAddress(&ustrObCreateObjectType);
  50.         if (temp != NULL)
  51.                 KdPrint(("GetObCreateObjectType successfully..\n"));
  52.         return temp;
  53. }

  54. POBJECT_TYPE* GetObpTypeObjectType(){
  55.         return (POBJECT_TYPE*)*(ULONG*)((ULONG)GetObCreateObjectType() + 0X2A8);
  56. }

  57. VOID EnumerateObjectType(){
  58.         ULONG OffsetObjectTypeName = 0x40;
  59.         ULONG OffsetCreatorInfoObject = 0x28;
  60.         ULONG OffsetObjectIndexObjectType = 0x4c;
  61.         ULONG TypeObjectAddr = *(PULONG_PTR)GetObpTypeObjectType();
  62.         PLIST_ENTRY TypeObjectCreatorInfo = (PLIST_ENTRY)(TypeObjectAddr - OffsetCreatorInfoObject);
  63.         PLIST_ENTRY NextEntry = TypeObjectCreatorInfo;
  64.         while (NextEntry->Flink != TypeObjectCreatorInfo)
  65.         {
  66.                 DbgPrint("TypeAddr=0x%08x,TypeName=%wZ,TypeIndex=%d\n",
  67.                         (ULONG_PTR)NextEntry + OffsetCreatorInfoObject,
  68.                         (PUNICODE_STRING)((ULONG_PTR)NextEntry + OffsetCreatorInfoObject + OffsetObjectTypeName),
  69.                         *(PUCHAR)((ULONG_PTR)NextEntry + OffsetCreatorInfoObject + OffsetObjectIndexObjectType));
  70.                 NextEntry = NextEntry->Flink;
  71.         }
  72. }
  73. NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegPath){
  74.         EnumerateObjectType();
  75.         pDriverObj->DriverUnload = DriverUnload;
  76.         return STATUS_SUCCESS;
  77. }
复制代码
代码如上,我的测试虚拟机系统是 32位的 xp sp3
运行结果是如下,为什么不能枚举所有的呢?

TypeObjectType

TypeObjectType
回复

使用道具 举报

升级   79.33%

17

主题

0

精华

169

积分
发表于 2017-1-10 09:03:03 | 显示全部楼层
一直数组枚举。。。
回复 支持 反对

使用道具 举报

升级   26%

3

主题

0

精华

13

积分
 楼主| 发表于 2017-1-10 13:42:20 | 显示全部楼层

并没有啊,我在循环后加一句打印,能够看见打印的,所以说不能是一直在枚举
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|mengwuji ( 粤ICP备13060035号-1 )  

GMT+8, 2017-1-22 01:26 , Processed in 0.336868 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表