首页
社区
课程
招聘
[求助]新建调试对象类型 NtDebugActiveProcess中ObReferenceObjectByHandle返回错误
发表于: 2017-7-28 19:53 6979

[求助]新建调试对象类型 NtDebugActiveProcess中ObReferenceObjectByHandle返回错误

2017-7-28 19:53
6979

下面代码

POBJECT_TYPE DbgkDebugObjectType;//自建的OBJECT对象
POBJECT_TYPE SysDebugObject;//系统的OBJECT对象

//PS:SysDebugObject这个是获取系统原始的

/////////////////////创建调试对象的代码片段//////////////////////////////////////
RtlInitUnicodeString(&Name, L"NewDebugObject");
			RtlMoveMemory(&oti,&SysDebugObject->TypeInfo,sizeof(OBJECT_TYPE_INITIALIZER ));
			oti.Length                    = sizeof (oti);
			oti.SecurityRequired          = TRUE;
			oti.InvalidAttributes         = 0;
			oti.PoolType                  = NonPagedPool;
			oti.DeleteProcedure           = SysDebugObject->TypeInfo.DeleteProcedure;
			oti.CloseProcedure            = SysDebugObject->TypeInfo.CloseProcedure;
			oti.ValidAccessMask           = DEBUG_ALL_ACCESS;
			oti.GenericMapping            = GenericMapping;
			oti.DefaultPagedPoolCharge    = 0;
			oti.DefaultNonPagedPoolCharge = 0;
			Status = ObCreateObjectType(&Name, &oti, 0, &DbgkDebugObjectType);//这里是创建成功的
///////////////////////////////////////////////////////////
			
			
			
///////////////////////////NtDebugActiveProcess的代码片段///////////////////////////////
	Status = ObReferenceObjectByHandle(DebugObjectHandle,
		DEBUG_PROCESS_ASSIGN,
		DbgkDebugObjectType,
		PreviousMode,
		&DebugObject,
		NULL);
		//就是这个ObReferenceObjectByHandle出错返回STATUS_OBJECT_TYPE_MISMATCH
		//想跟进去看哪里出错,但是好像系统下了异常,进去就改成NtReadfile访问的
		//参数什么的不懂看,感觉很乱
//下面是自建的DbgkDebugObjectType的结构体数据
lkd> dt _OBJECT_TYPE 88694270
ntdll!_OBJECT_TYPE
   +0x000 TypeList         : _LIST_ENTRY [ 0x88694270 - 0x88694270 ]
   +0x008 Name             : _UNICODE_STRING "NewDebugObject"
   +0x010 DefaultObject    : (null) 
   +0x014 Index            : 0x2c ','
   +0x018 TotalNumberOfObjects : 1
   +0x01c TotalNumberOfHandles : 1
   +0x020 HighWaterNumberOfObjects : 1
   +0x024 HighWaterNumberOfHandles : 1
   +0x028 TypeInfo         : _OBJECT_TYPE_INITIALIZER
   +0x078 TypeLock         : _EX_PUSH_LOCK
   +0x07c Key              : 0x69746e41
   +0x080 CallbackList     : _LIST_ENTRY [ 0x886942f0 - 0x886942f0 ]
lkd> DT _OBJECT_TYPE_INITIALIZER   88694270+28
ntdll!_OBJECT_TYPE_INITIALIZER
   +0x000 Length           : 0x50
   +0x002 ObjectTypeFlags  : 0x8 ''
   +0x002 CaseInsensitive  : 0y0
   +0x002 UnnamedObjectsOnly : 0y0
   +0x002 UseDefaultObject : 0y0
   +0x002 SecurityRequired : 0y1
   +0x002 MaintainHandleCount : 0y0
   +0x002 MaintainTypeList : 0y0
   +0x002 SupportsObjectCallbacks : 0y0
   +0x004 ObjectTypeCode   : 0
   +0x008 InvalidAttributes : 0
   +0x00c GenericMapping   : _GENERIC_MAPPING
   +0x01c ValidAccessMask  : 0x1f000f
   +0x020 RetainAccess     : 0
   +0x024 PoolType         : 0 ( NonPagedPool )
   +0x028 DefaultPagedPoolCharge : 0
   +0x02c DefaultNonPagedPoolCharge : 0x30
   +0x030 DumpProcedure    : (null) 
   +0x034 OpenProcedure    : (null) 
   +0x038 CloseProcedure   : 0x83ec4d37     void  nt!DbgkpCloseObject+0
   +0x03c DeleteProcedure  : 0x83e94c24     void  nt!FsRtlInitializeOplock+0
   +0x040 ParseProcedure   : (null) 
   +0x044 SecurityProcedure : 0x83e7c946     long  nt!SeDefaultObjectMethod+0
   +0x048 QueryNameProcedure : (null) 
   +0x04c OkayToCloseProcedure : (null)

系统是WIN7 SP1   

麻烦谁能告诉我下为什么会出错啊,网上搜索居然没人碰到这情况?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
https://git.oschina.net/hzqst/FuckTP  自己对着看吧
2017-7-28 21:04
0
雪    币: 16
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
hzqst https://git.oschina.net/hzqst/FuckTP 自己对着看吧
看不出什么呢,不知道是不是我只HOOK  DebugActiveProcess而已,其他地方没HOOK,所以造成其他地方的访问对象不匹配?
2017-7-28 22:18
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
4
林栩 看不出什么呢,不知道是不是我只HOOK DebugActiveProcess而已,其他地方没HOOK,所以造成其他地方的访问对象不匹配?
我那份代码里就是自建调试对象,实测xp~win10都能用,根本没有hook,也不需要过pg
2017-7-28 22:35
0
雪    币: 16
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
hzqst 我那份代码里就是自建调试对象,实测xp~win10都能用,根本没有hook,也不需要过pg
好吧,百度搜总是出现你这套代码,我还是用你的慢慢看看
2017-7-28 23:08
0
雪    币: 89
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
hzqst https://git.oschina.net/hzqst/FuckTP 自己对着看吧
关键代码隐藏....
2018-8-14 00:47
0
雪    币: 290
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
hzqst https://git.oschina.net/hzqst/FuckTP 自己对着看吧
老哥,请教个问题
DbgkDebugObjectType是个全局量吧,如果TP把这个的里面的GenericMapping的权限全部清零了,
是不是不仅无法调试受TP保护的进程,而是之后系统上所有新建调试都会失效
2019-5-15 15:32
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
hzqst https://git.oschina.net/hzqst/FuckTP 自己对着看吧
好哥哥,能帮我解答一下吗?
2020-8-24 15:16
0
游客
登录 | 注册 方可回帖
返回
//