看流星社区

 找回密码
 注册账号
查看: 2399|回复: 0

山寨OBJECT_TYPE隐藏技术的检测方法

[复制链接]

该用户从未签到

发表于 2013-2-7 09:13:23 | 显示全部楼层 |阅读模式
作者:xiaoxinjiang

针对《对抗内存搜索对象-教主》一文中山寨OBJECT_TYPE隐藏技术的检测方法:

方法1:

[Windows XP sp2]

nt!_OBJECT_TYPE
   +0x000 Mutex            : _ERESOURCE
   +0x038 TypeList         : _LIST_ENTRY [ 0x821a55f0 - 0x821a55f0 ]
   +0x040 Name             : _UNICODE_STRING "Driver"
   +0x048 DefaultObject    : 0x805598c0
   +0x04c Index            : 0x1a
   +0x050 TotalNumberOfObjects : 0x61
   +0x054 TotalNumberOfHandles : 0
   +0x058 HighWaterNumberOfObjects : 0x67
   +0x05c HighWaterNumberOfHandles : 1
   +0x060 TypeInfo         : _OBJECT_TYPE_INITIALIZER
   +0x0ac Key              : 0x76697244
   +0x0b0 ObjectLocks      : [4] _ERESOURCE

nt!_OBJECT_TYPE_INITIALIZER
   +0x000 Length           : Uint2B
   +0x002 UseDefaultObject : UChar
   +0x003 CaseInsensitive  : UChar
   +0x004 InvalidAttributes : Uint4B
   +0x008 GenericMapping   : _GENERIC_MAPPING
   +0x018 ValidAccessMask  : Uint4B
   +0x01c SecurityRequired : UChar
   +0x01d MaintainHandleCount : UChar
   +0x01e MaintainTypeList : UChar
   +0x020 PoolType         : _POOL_TYPE
   +0x024 DefaultPagedPoolCharge : Uint4B
   +0x028 DefaultNonPagedPoolCharge : Uint4B
   +0x02c DumpProcedure    : Ptr32     void
   +0x030 OpenProcedure    : Ptr32     long
   +0x034 CloseProcedure   : Ptr32     void
   +0x038 DeleteProcedure  : Ptr32     void
   +0x03c ParseProcedure   : Ptr32     long
   +0x040 SecurityProcedure : Ptr32     long
   +0x044 QueryNameProcedure : Ptr32     long
   +0x048 OkayToCloseProcedure : Ptr32     unsigned char


以上红色部分即可作为OBJECT_TYPE的特征,在查找对象的时候不直接比较OBJECT_TYPE的地址,而是按照地址找到OBJECT_TYPE_INITIALIZER,将之与*IoDriverObjectType的OBJECT_TYPE_INITIALIZER的xxxProcedure进行比较,相同即为DRIVER_OBJECT的OBJECT_HEADER。

方法2:
首先搜索内存中Type对象,然后搜索要找的内核对象,凡是size符合搜索的内核对象但是Type不符的,记录为可疑对象。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-25 16:08

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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