对象管理器是一个用于创建、删除、保护和跟踪对象的执行体组件,在对象 与对象结构体之间起着桥梁作用。Ring3级应用程序只有通过对象标识才能访问 到系统资源,句柄类型已经成为除整型、string类型之外最常见的变量类型。但至今句柄类型的精确格式Microsoft并没给出任何官方文档。因此,对象标识符可以视为数量id、特殊位图格式甚至是传统指针等。其主要原因是没有与句柄相关的服务或者api函数可利用到句柄值特性。理论上,仅对象管理器会对对象id的布局感兴趣,因为其负责执行句柄与对象之间的翻译工作,即如何从句柄值映射到具体对象上。Windows内核的其它部分若需要访问这些对象,必须借助对象 管理器提供的公共接口,即以“Ob”为前缀的内核导出函数方式进行访问,如 nt! 0匕尺6亡6『61^6013』_6^8711&1^16或者1^ ! ObDereferenceObject.虽然如此,但可 能更多读者对特殊句柄值格式以及句柄分配算法感兴趣。如在整个系统会话过程 中句柄分配与释放的内部实现等,这些对”1^(^8底层程序开发者更为受用,这 些原理或许可帮助他们利用句柄使用、释放漏洞控制系统/主机特定资源的数值类型等。 |