欢迎光临散文网 会员登陆 & 注册

天道酬勤Windows内核安全VIP

2023-08-04 14:54 作者:bili_34189062872  | 我要投稿
  • 每个内核对象都只是一个内存块,由操作系统分配,并只能由操作内核访问。这个内存块是一个数据结构,其成员维护着与对象有关的信息。少数成员如:安全描述符和使用计数等是所有对象共有的。但其他大多数成员都是不同类型的对象特有的

  • 为了增强操作系统的可靠性,内核对象句柄值是与进程相关的。所以,如果将句柄值传给另一个进程,那么另一个进程用此句柄值来进行调用时,会发生失败,更糟糕的是,他们会根据该句柄在我们进程的句柄表的索引来引用一个可能完全不同类型的内核对象

  • 内核对象的拥有者是操作系统内核,而非进程。内核对象的生命期可能会长于创建他的那个线程。操作系统通过内核对象的使用计数,来确定内核对象的销毁时间

  • 内核对象可以用一个安全描述符来保护。安全描述符描述了谁拥有对象、谁被允许使用和访问对象。用于创建内核对象的所有函数几乎都有一个指向SECURITY_ATTRIBUTES结构的指针作为参数,大多数情况下应传入NULL,这样创建的内核对象具有默认安全属性

  • 一个进程在初始化时,系统将为其分配一个句柄表。这个句柄表仅供内核对象使用,一个进程初始化时候,其句柄表为空,当进程调用创建内核对象的 API 时,内核扫描进程的句柄表,查找一个空白的记录项并对其进行初始化

  • 创建内核对象的 API 调用失败,返回值可能是 NULL 也可能是INVALID_HANDLE_VALUE

  • 在不需要使用内核对象的时候,记得使用 CloseHandle 来释放资源


天道酬勤Windows内核安全VIP的评论 (共 条)

分享到微博请遵守国家法律