首页
论坛
课程
招聘
[原创]暑假浅谈系列第二帖——win7 object hook
2014-7-6 01:44 7286

[原创]暑假浅谈系列第二帖——win7 object hook

2014-7-6 01:44
7286
要知道,在win7以前object 是需要自定义宏来 hook的,还需要硬编码.但是到了win7以后发生了很大的变化
有一个小错误导致蓝屏现在我改一下;
NTKERNELAPI
PVOID
NTAPI
ObGetObjectType(
				IN PVOID pObject
				);

①.我们先看 xp 的  Object_header;
kd> dt _object_header
nt!_OBJECT_HEADER
   +0x000 PointerCount     : Int4B
   +0x004 HandleCount      : Int4B
   +0x004 NextToFree       : Ptr32 Void
   +0x008 Type             : Ptr32 _OBJECT_TYPE 这个:
   +0x00c NameInfoOffset   : UChar
   +0x00d HandleInfoOffset : UChar
   +0x00e QuotaInfoOffset  : UChar
   +0x00f Flags            : UChar
   +0x010 ObjectCreateInfo : Ptr32 _OBJECT_CREATE_INFORMATION
   +0x010 QuotaBlockCharged : Ptr32 Void
   +0x014 SecurityDescriptor : Ptr32 Void
   +0x018 Body             : _QUAD

接着在看win7下的
kd> dt _object_header
nt!_OBJECT_HEADER
   +0x000 PointerCount     : Int4B
   +0x004 HandleCount      : Int4B
   +0x004 NextToFree       : Ptr32 Void
   +0x008 Lock             : _EX_PUSH_LOCK 这个没了变成这个了
   +0x00c TypeIndex        : UChar
   +0x00d TraceFlags       : UChar
   +0x00e InfoMask         : UChar
   +0x00f Flags            : UChar
   +0x010 ObjectCreateInfo : Ptr32 _OBJECT_CREATE_INFORMATION
   +0x010 QuotaBlockCharged : Ptr32 Void
   +0x014 SecurityDescriptor : Ptr32 Void
   +0x018 Body             : _QUAD

那win7的 对象去哪里了?
带着这个问题,我们先看微软给的这个函数 ObGetObjectType
kd> u ObGetObjectType
nt!ObGetObjectType:
8406987b 8bff            mov     edi,edi
8406987d 55              push    ebp
8406987e 8bec            mov     ebp,esp
84069880 8b4508          mov     eax,dword ptr [ebp+8]
84069883 0fb640f4        movzx   eax,byte ptr [eax-0Ch][COLOR="red"]②[/COLOR]
84069887 8b04858045f583  mov     eax,dword ptr nt!ObTypeIndexTable (83f54580)[eax*4]
8406988e 5d              pop     ebp
8406988f c20400          ret     4

可以看到movzx   eax,byte ptr [eax-0Ch]你懂得.
然后我们可以试验一下.
xp 下的 结构
typedef struct _OBJECT_TYPE { 
	ERESOURCE Mutex; 
	LIST_ENTRY TypeList; 
	UNICODE_STRING Name; 
	PVOID DefaultObject; 
	ULONG Index; 
	ULONG TotalNumberOfObjects; 
	ULONG TotalNumberOfHandles; 
	ULONG HighWaterNumberOfObjects; 
	ULONG HighWaterNumberOfHandles; 
	OBJECT_TYPE_INITIALIZER TypeInfo; 

win7下的
typedef struct _OBJECT_TYPE { 
	LIST_ENTRY TypeList; 
	UNICODE_STRING Name; 
	PVOID DefaultObject; 
	ULONG Index; 
	ULONG TotalNumberOfObjects; 
	ULONG TotalNumberOfHandles; 
	ULONG HighWaterNumberOfObjects; 
	ULONG HighWaterNumberOfHandles; 
	OBJECT_TYPE_INITIALIZER TypeInfo;
	ULONG  TypeLock;
	ULONG   Key;
	LIST_ENTRY   CallbackList; 
} OBJECT_TYPE, *POBJECT_TYPE; 


很明显多了一些东西先卖一个关子,以后在说.

接着 OBJECT_TYPE_INITIALIZER  也是发生了不同 win7.
typedef struct _OBJECT_TYPE_INITIALIZER {
	    USHORT Length  ;
		ULONG ObjectTypeFlags ;
		ULONG CaseInsensitive  ;
		ULONG UnnamedObjectsOnly ;
		ULONG  UseDefaultObject ;
		BOOLEAN  SecurityRequired ;
		BOOLEAN MaintainHandleCount ;
		BOOLEAN MaintainTypeList ; 
		ULONG SupportsObjectCallbacks ;
		ULONG CacheAligned     ;
		ULONG ObjectTypeCode   ;
		ULONG InvalidAttributes ;
		GENERIC_MAPPING GenericMapping   ; 
		ULONG   ValidAccessMask  ;
		ULONG   RetainAccess    ;
		POOL_TYPE PoolType        ; 
		ULONG DefaultPagedPoolCharge ;
		ULONG DefaultNonPagedPoolCharge ;
		PVOID DumpProcedure   ;
		PVOID OpenProcedure    ;
		PVOID CloseProcedure  ;
		PVOID DeleteProcedure ;
		PVOID ParseProcedure  ;
		PVOID SecurityProcedure;
		PVOID QueryNameProcedure;
		PVOID OkayToCloseProcedure ;
} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;

明显比xp多了很多.
群:Super-Rootkis 121157016 欢迎大家来玩,进来主要公告.

本人14号有事要去杭州,呆一个月:
1. 想找一份实习工作,没多少钱都没关系.
2.打杂端菜都可以,希望有一份兼职

                                没公司吗?
另外接上一篇 通信篇

[注意] 欢迎加入看雪团队!base上海,招聘安全工程师、逆向工程师多个坑位等你投递!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (8)
雪    币: 8
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xiaoabing 活跃值 2014-7-6 01:48
2
0
这么晚还在啊,是真爱!!!
雪    币: 470
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnxxm 活跃值 2014-7-6 04:03
3
0
前排,广告位招租
雪    币: 610
活跃值: 活跃值 (241)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
ugvjewxf 活跃值 2014-7-6 08:54
4
0
这么晚还在啊,是真爱!!!
雪    币: 86
活跃值: 活跃值 (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shuxuliang 活跃值 2014-7-6 10:31
5
0
win7下TypeIndex 作为索引获取object type,不是以前那样直接拿到object type的地址了
雪    币: 8
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guyue三十五 活跃值 2014-7-6 11:02
6
0
看来lz是学生哦   没错吧
雪    币: 177
活跃值: 活跃值 (256)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
viphack 活跃值 4 2014-7-6 12:28
7
0
结构 上面一个错误导致 蓝屏 key取出的值为错误,现在已经修复
雪    币: 7506
活跃值: 活跃值 (298)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
achillis 活跃值 15 2014-7-6 20:15
8
0
四年前写的一篇文章:
http://hi.baidu.com/_achillis/item/f3bfd312608a25fcddeeca08
雪    币: 177
活跃值: 活跃值 (256)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
viphack 活跃值 4 2014-7-6 22:39
9
0
是教主啊,当初我写win7 object hook 就是看这篇文章的,没想到这个真是历史悠久啊教主内力深不可测,小生不敢献丑
游客
登录 | 注册 方可回帖
返回