查看目标进程的对象和对象体
① !object \ ,列出根目录下所有的对象,其中 \objecttypes 目录下存在 Process 对象, 拿到对象头地址后直接 dt _object_header xxxxxxxx ,此种方法只能查出 ObjectType(其 Type 为 Type,由Create),即创建新进程时作为 ObCreateObject 函数的参数。所以其 header 中的很多域都为 Null
注意:此处的 Object:821b7e70 指的是对象体,即 _object_header +18h 即可找到对象体。
② !process 0 1 [ImageName] ,然后查看进程的对象表(类型为 _Handle_Table)
!object 0 7 8200dda0 即可。 8200dda0 是 _EProcess 结构体的首地址。
ObjectTable 中则存储着该进程中包含的所有的句柄,是找不到内核对象的。
注意这两个程序的 _Object_Type 的地址相同,都来自于本文的第一个图。
当在查看 Directory 对象时,Directory 是一个链式结构,前四字节索引到下一个八字节,后四字节是 object 地址。