【windows 操作系统】Windows系统机制之对象管理器
转载自
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系统机制之对象管理器的更多相关文章
- Windows操作系统及其安全机制
		
kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html Windows操作系统及其安全机制 Windows文件系统 FAT (F ...
 - [windows操作系统]windows管理
		
1.磁盘管理: 1.1.使用DISKPART命令行工具创建扩展分区: windows自带有一个disk management(磁盘管理)工具,但在其中却找不到如何创建扩展分区(一般MBR分区格式需要扩 ...
 - [windows操作系统]windows模块
		
smss.exe csrss.exe Client/Server Runtime Server Subsystem
 - 深入解析Windows操作系统笔记——CH3系统机制
		
3.系统机制 微软提供了一些基本组件让内核模式的组件使用: 1.陷阱分发,包括终端,延迟的过程调用(DPC),异步过程调用(APC),异常分发以及系统服务分发 2.执行体对象管理器 3.同步,包括自旋 ...
 - 检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
		
/** * Author: laixiangran. * Created by laixiangran on 2015/12/02. * 检测访问网页的浏览器呈现引擎.平台.Windows操作系统.移 ...
 - userAgent,JS这么屌的用户代理,你造吗?——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
		
1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: var client = function() { var ...
 - 常规操作系统Windows系统淋雨系统Unix系统netware等系统介绍分析
		
服务器操作系统有有很多,比如说:Windows.Linux.Unix和Netware......但我们经常用过仅有Windows和Linux.下面简单为大家介绍一下常见服务器操作系统. 1.Windo ...
 - windows内核初窥(二)-----系统机制
		
系统机制: windows2000为执行体.内核.设备驱动程序等核心态部分提供了一些基础机制.先让我们看看都有哪些: (1)陷阱调度:包括中断.延迟过程调用(DPC).异步过程调用(APC).异常处理 ...
 - 深入解析Windows操作系统笔记——CH2系统结构
		
2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称 ...
 
随机推荐
- mysql表设计原则
			
0.三大范式及反范式 ◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列. ◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键:二是没有包含在主键中的 ...
 - vue3源码node的问题
			
下载vue3源码后,下载依赖时,node的版本需要在10.0.0以上,并且不同的vue3里面的插件的配置对版本依赖还不同,14.0.0以上的版本基本都不支持win7了, win7系统可以安装12.0. ...
 - Spring boot + Vue axios 文件下载
			
后端代码: @GetMapping("/{sn}") @ApiOperation(value = "获取文件",notes = "获取文件" ...
 - python中grpc配置asyncio使用
			
python中grpc配置asyncio使用 安装grpclib pip3 install grpclib protoc编译.proto文件,生成源码文件 python -m grpc_tools.p ...
 - Casbin + Gin + Gorm 学习探索
			
Casbin 是一个强大的,开源的访问控制框架,权限管理机制支持多种访问控制模型: 并且支持多种编程语言: 文档地址:https://casbin.org/docs/zh-CN/overview Gi ...
 - gin中如何自定义验证器
			
package main import ( "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding&qu ...
 - 你可能不知道的Animation动画技巧与细节
			
引言 在web应用中,前端同学在实现动画效果时往往常用的几种方案: css3 transition / animation - 实现过渡动画 setInterval / setTimeout - 通过 ...
 - python3 爬取深圳主板公司名称,公司网址
			
需要阅读的文档: Requests:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html BeautifulSoup:http ...
 - BugKu-杂项(Misc)的部分Writeup(持续更新)
			
第一次写博客,有不好的地方,麻烦大佬指正,我用了些时间把BugKu里的Misc的解题思路和套路整理了一下,发出来分享 各位小可爱们,右边有目录可以快速跳转哦 1.签到题 给了一张二维码,扫描关注就得到 ...
 - 被mybatis一级缓存坑了
			
目录 背景 场景 原因 解法 参考 背景 项目中出现了这样一个问题,就是select出来的数据和数据库里的数据不一样,就非常的奇怪,发现原来是mybatis的缓存导致的,经过查询资料发现这是mybat ...
 
			
		
