[原创]浅谈之创建自己的对象
内核对象是经久不衰的讨论的问题。
微软创建了很多类型的对象比如:进程对象,端口对象,注册表对象,调试对象。。。。

(Windows 工作模式几乎是:打开内核对象->吧进程和目标进程建立起来->在通过系统操作->最后在关闭内核对象)
1.也就是无论当做哪一个环节被我们干涉,对象操作目的都将随着我们的改变而改变~

首先 任何的一个对象都有 对象头(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
typedef struct _OBJECT_HEADER {
LONG PointerCount;
union {
LONG HandleCount;
PSINGLE_LIST_ENTRY SEntry;
};
POBJECT_TYPE Type;
UCHAR NameInfoOffset;
UCHAR HandleInfoOffset;
UCHAR QuotaInfoOffset;
UCHAR Flags;
union
{
POBJECT_CREATE_INFORMATION ObjectCreateInfo;
PVOID QuotaBlockCharged;
};
PSECURITY_DESCRIPTOR SecurityDescriptor;
QUAD Body;
} OBJECT_HEADER, *POBJECT_HEADER;
我们今天关注的是 产生自己的新对象 实现XX002.我们要用到 ObCreateObjectType这个函数。
这个函数 会根据我们提交的申请单直接挂在对象目录里面,对象的核心在于 Object_Type中的Info所对应的 数据类型 也就是_OBJECT_TYPE_INITIALIZER结构体
绕了一大圈有点像绕口令的感觉。
现在我们就动手做自己的对象吧~看图

打一下小广告 群:121157016 禁止扯淡,潜水可以~
老V还有几头牛都在里面
