欢迎来到 嗅灵易学

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

科锐三阶段项目---CreateProcess流程分析之二:ObInsertObject分析报告

科锐三阶段项目---CreateProcess流程分析之二:ObInsertObject分析报告

这个是武汉科锐 第三阶段 的分析项目,每个同学负责不同的模块。在此我将我所分析的模块发出来。
声明:由于本人能力有限,文中必然有错漏之处,恳请读者不吝赐教。
  ObInsertObject它的作用是将所创建的对象插入对象目录和本进程句柄表(或内核句柄表),并返回句柄。插入对象目录的目的是使得以后可以按对象名及期路径找到对象,而句柄表的插入则使当前进程在创建之余同时打开了这个对象。
我们先来了解一下ObInsertObject的大概流程:
  首先是一些常规检查,如果对象名没有指定的话,创建一个无名对象句柄,同时将ObpCreateUnnamedHandle的返回值返回。
  然后再判断一个访问状态(AccessState)是否为空,如果为空的话就调用SeCreateAccessState创建一个,如果创建出错了,返回错误码。
  接着再判断对象名是否为空,如果不为空的话,调用ObpLookupObjectName查找一下目录下面是否有同名的存在, 如果就通过指针返回对象,否则就返回STATUS_OBJECT_NAME_NOT_FOUND,如果没有找到就把这个对象挂入给定的目录,并通过指针返回这个对象的指针。
  接着再判断是不是要创建符号连接,是的话通过ObpCreateSymbolicLinkName创建。
  下面再判断是不是成功插入对象目录,再根据所在目录修正目标对象的访问控制描述。
  最后就是句柄表中创建一个新的句柄。

  现在我们开始分析ObInsertObject函数。
  首先函数完成对一些局部变量的赋值,比如取得ObjectType等操作。
  接着先判断一下是不是要创建无名对象句柄。

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

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

0 0 0 举报
复制成功