转载自

Windows系统机制之对象管理器

设计的几个目的:

  • 提供一种公共统一的机制来使用系统资源
  • 将对象保护隔离到OS中的一个地方,从而确保统一的一致的对象访问策略
  • 提供一种机制来管理进程对对象的使用
  • 支持各种OS环境需求,比如一个进程能够从父进程继承资源
  • 建立统一的规则来维护对象的保持力
  • 提供为特定的会话隔离对象的能力,以便在命名空间中允许局部和全局对象并存

对象接口 Windows 提供了执行以下任务的函数:

  • 创建对象
  • 获取对象句柄
  • 获取有关对象的信息
  • 设置有关对象的信息
  • 关闭对象句柄
  • 销毁对象

Windows内部对象分三种:

  • 执行体对象(进程管理器、内存管理器、I/O子系统)
  • 内核对象(最基本的对象,用户模式不可见,执行体内部使用)
  • GDI/User对象(Windows子系统对象,不与内核打交道)

执行体对象

耳熟能详的执行体对象:

类型 描述
Process 执行一组线程对象所必需的虚拟地址空间和控制信息
Thread 进程内部的一个可执行实体
Job 一组进程,通过作业机制,可以像单个实体那样来管理多个进程
Section 共享内存的一个区域(文件映射对象)
File 一个已打开的文件或I/O设备的实例
Token 一个进程或线程的安全轮廓(安全ID、用户权限等)
Event 具有持久状态(有信号或无信号)的对象,用于同步或通知
Semaphore 信号量是计数器,提供资源门控能力
Mutex 互斥量,用于顺序访问一个资源的一种同步机制
Timer 定时机制
IoCompletion I/O完成端口
Key 引用注册表数据的机制
Directory 对象管理器命名空间中的虚拟目录
TpWorkerFactory 执行一组特定任务的线程集合,线程池。
TmRm、TmTx、TmTm、TmEn 内核事务管理器KTM为各种事务登记而使用的对象
WindowStation 包含一个剪贴板、一组全局原子和一组桌面对象
Desktop 包含在窗口站内部的对象。
PowerRequest 关联一个线程,通过SetThreadExecutionState调用请求指定的电源改变。
EtwConsumer 代表一个已连接的ETW实时消费者已经通过StartTrace API进行了注册
EtwRegistration 代表一个注册对象,与某个用户模式或内核模式ETW提供者关联

后面的这些对象不知道都是些什么鬼。

对象结构

header+body。

对象管理器控制了对象头,执行体组件控制了它们创建的对象体。对象头有一个索引,指向一个类型对象,该对象包含的信息对每个实例都是公共的。

知识点:对象可选子头的条件、位置、用途

通用的对象服务:

服务 用途
关闭 关闭指向某个对象的句柄
复制 复制句柄,再将它交给另一个进程的方法来共享对象
使永久/临时 改变对象的保持力
查询对象 获得关于对象的标准属性信息
查询安全性 获取对象安全描述符
设置安全性 改变对象的保护设置
等待一个对象 用一个对象来同步线程的执行
给一个对象发信号,并等待另一个对象 给一个对象发信号,通过另一个对象来同步线程执行
等待多个对象 多个对象来同步线程执行

类型对象

每个对象有它的类型,由头中指针决定,指针指向一张表,表内是所有类型。每种类型由对应的各类操作方法,内核漏洞利用的手法中经常可以看到把该指针指向0x0或者修改类型对象方法的指针等。

对象方法 调用时机
Open 对象句柄被打开
Close 对象句柄被关闭
Delete 对象管理器删除对象前
Query name 线程请求在一个从属命名空间中查询一个对象的名称时
Parse 对象管理器在一个从属命名空间中搜索一个对象名称时
Dump 未用
Okay to close 对象管理器接到指令要关闭句柄时
Security 进程读取或改变一个对象在其从属命名空间中的保护属性时

对象句柄和进程句柄表

对象句柄是个索引值,最终通过句柄表的结构找到对应表项。EPROCESS有一个指向进程句柄表的域。第一个句柄索引为4,第二个是8。

句柄表是一个动态三层结构,类似虚拟地址到物理地址转译的三级结构。

具体跟WRK代码吧,代码已经写得非常清楚了。

【windows 操作系统】Windows系统机制之对象管理器的更多相关文章

  1. Windows操作系统及其安全机制

    kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html Windows操作系统及其安全机制 Windows文件系统 FAT (F ...

  2. [windows操作系统]windows管理

    1.磁盘管理: 1.1.使用DISKPART命令行工具创建扩展分区: windows自带有一个disk management(磁盘管理)工具,但在其中却找不到如何创建扩展分区(一般MBR分区格式需要扩 ...

  3. [windows操作系统]windows模块

    smss.exe csrss.exe    Client/Server Runtime Server Subsystem

  4. 深入解析Windows操作系统笔记——CH3系统机制

    3.系统机制 微软提供了一些基本组件让内核模式的组件使用: 1.陷阱分发,包括终端,延迟的过程调用(DPC),异步过程调用(APC),异常分发以及系统服务分发 2.执行体对象管理器 3.同步,包括自旋 ...

  5. 检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统

    /** * Author: laixiangran. * Created by laixiangran on 2015/12/02. * 检测访问网页的浏览器呈现引擎.平台.Windows操作系统.移 ...

  6. userAgent,JS这么屌的用户代理,你造吗?——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统

    1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: var client = function() { var ...

  7. 常规操作系统Windows系统淋雨系统Unix系统netware等系统介绍分析

    服务器操作系统有有很多,比如说:Windows.Linux.Unix和Netware......但我们经常用过仅有Windows和Linux.下面简单为大家介绍一下常见服务器操作系统. 1.Windo ...

  8. windows内核初窥(二)-----系统机制

    系统机制: windows2000为执行体.内核.设备驱动程序等核心态部分提供了一些基础机制.先让我们看看都有哪些: (1)陷阱调度:包括中断.延迟过程调用(DPC).异步过程调用(APC).异常处理 ...

  9. 深入解析Windows操作系统笔记——CH2系统结构

    2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称 ...

随机推荐

  1. for in 遍历对象

    如果直接写car.key会输出undefined,下面的注释是浏览器运行的原理,浏览器最终都是以car["key"]的方式来查找数据的

  2. 异常机制(Exception)

    异常机制(Exception) 异常程序是指程序运行中出现的不期而至的各种状况,如文件找不到,网络连接失败,非法参数等. 异常发生在程序运行期间,它影响了正常的程序执行流程 检查性异常 最具代表性的检 ...

  3. IntelliJ IDEA 热部署,修改java文件 不用重启tomcat

    详情见大佬:https://www.cnblogs.com/chenweichu/articles/6838842.html

  4. Power Apps 创建响应式布局

    前言 我们都知道Power Apps作为低代码平台,最大的优势就是各个设备之间的兼容性,尤其是自带的响应式布局,非常好用. 这不,我们就为大家分享一下,如何使用Power Apps画布应用,创建响应式 ...

  5. 学习MyBatis必知必会(2)~MyBatis基本介绍和MyBatis基本使用

    一.MyBatis框架基本介绍: 1.认识 MyBatis: MyBatis 是支持普通 SQL 查询,存储过程和高级映射的持久层框架,严格上说应该是一个 SQL 映射框架. 其前身是 iBatis, ...

  6. tmux 入门教程

    tmux 本教程是基于ACWing的<Linux基础课>所做,希望大家支持ACWing 功能 分屏 当需要同时运行两个终端,并且进行比对着输入时,来回切换比较麻烦,就可以利用分屏 可以在一 ...

  7. 从Apache官网下载Jar包步骤

    第一步:在官网找寻需要的包 Apache网址:http://commons.apache.org/ 在官网中,可以直接看到不同jar包的分类,如下图所示: 也可以点击官网左侧栏目里的 Release, ...

  8. ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.12

    公告 我们的所有非技术内容和活动,从现在开始会使用 iBooker 这个名字. "开源互助联盟"已终止,我们对此表示抱歉和遗憾.除非特地邀请,我们不再推广他人的任何项目. 公众号自 ...

  9. ApacheCN JavaWeb 译文集 20211017 更新

    使用 Spring5 构建 REST Web 服务 零.前言 一.一些基本知识 二.在 Spring5 中使用 Maven 构建 RESTfulWeb 服务 三.Spring 中的 Flux 和 Mo ...

  10. atc工具模拟网络

    通过Facebook开源的atc工具,进行模拟不同的网络情况,如图: 目前不支持python3 相关网址: ATC http://facebook.github.io/augmented-traffi ...