欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]浅谈之创建自己的对象

[原创]浅谈之创建自己的对象

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

(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;
我们今天关注的是 产生自己的新对象 实现XX00
2.我们要用到 ObCreateObjectType这个函数。
这个函数 会根据我们提交的申请单直接挂在对象目录里面,对象的核心在于 Object_Type中的Info所对应的 数据类型 也就是_OBJECT_TYPE_INITIALIZER结构体
绕了一大圈有点像绕口令的感觉。
现在我们就动手做自己的对象吧~
看图
打一下小广告 群:121157016 禁止扯淡,潜水可以~  老V还有几头牛都在里面

上传的附件 xiaossshou.rar
360截图20130826014322801.jpg

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功