Microsoft windows internals 学习笔记(4)
2008-04-30 12:30
337 查看
对象管理器: windows内部有两种类型的对象:执行体对象和内核对象。执行体对象是指由执行体的各种组件所实现的对象。内核对象是指由windows内核实现的一组更为基本的对象,对用户模式代码不可见。执行体对象包含了一个或多个内核对象。 对象的结构:每个对象都有一个对象头和对象体。对象管理器控制了对象头,而执行体组件控制了由他们创建的对象类型的对象体。每个对象头指向一个进程列表,列表每个进程都打开了此对象。每个对象头也指向了一个被称为类型对象的(type object)特殊对象,该对象包含的信息对于每个实例都是公共的。 实验:查看对象头和类型对象 lkd> !process 0 0 //找到进程对象 **** NT ACTIVE PROCESS DUMP **** PROCESS 89d53830 SessionId: none Cid: 0004 Peb: 00000000 ParentCid: 0000 DirBase: 0a400020 ObjectTable: e1002e40 HandleCount: 1571. Image: System PROCESS 89454a20 SessionId: none Cid: 048c Peb: 7ffd4000 ParentCid: 0004 DirBase: 0a400040 ObjectTable: e1473348 HandleCount: 19. Image: smss.exe PROCESS 893f1da0 SessionId: 0 Cid: 04d0 Peb: 7ffd6000 ParentCid: 048c DirBase: 0a400060 ObjectTable: e10102a8 HandleCount: 779. Image: csrss.exe PROCESS 8943eb28 SessionId: 0 Cid: 04ec Peb: 7ffde000 ParentCid: 048c DirBase: 0a400080 ObjectTable: e1538268 HandleCount: 466. Image: winlogon.exe 用进程对象地址作参数执行!object lkd> !object 865ad020 Object: 865ad020 Type: (89d53e70) Process ObjectHeader: 865ad008 (old version) //对象头 HandleCount: 1 PointerCount: 2 查看对象头: lkd> dt _Object_Header 865ad008 nt!_OBJECT_HEADER +0x000 PointerCount : 2 +0x004 HandleCount : 1 +0x004 NextToFree : 0x00000001 +0x008 Type : 0x89d53e70 _OBJECT_TYPE +0x00c NameInfoOffset : 0 '' +0x00d HandleInfoOffset : 0 '' +0x00e QuotaInfoOffset : 0 '' +0x00f Flags : 0x20 ' ' +0x010 ObjectCreateInfo : 0x88d54678 _OBJECT_CREATE_INFORMATION +0x010 QuotaBlockCharged : 0x88d54678 +0x014 SecurityDescriptor : 0xe25fe9e5 +0x018 Body : _QUAD 查看对象类型数据结构: lkd> dt _OBJECT_TYPE 89d53e70 nt!_OBJECT_TYPE +0x000 Mutex : _ERESOURCE +0x038 TypeList : _LIST_ENTRY [ 0x89d53ea8 - 0x89d53ea8 ] +0x040 Name : _UNICODE_STRING "Process" +0x048 DefaultObject : (null) +0x04c Index : 5 +0x050 TotalNumberOfObjects : 0x47 +0x054 TotalNumberOfHandles : 0xaf +0x058 HighWaterNumberOfObjects : 0x47 +0x05c HighWaterNumberOfHandles : 0xb1 +0x060 TypeInfo : _OBJECT_TYPE_INITIALIZER +0x0ac Key : 0x636f7250 +0x0b0 ObjectLocks : [4] _ERESOURCE TypeInfo 域保存了一个指针,指向的数据结构对于该对象类型的所有对象都公共的属性以及一组指向该对象类型的方法的指针: lkd> dt _OBJECT_TYPE_INITIALIZER 89d53e70+60 nt!_OBJECT_TYPE_INITIALIZER +0x000 Length : 0x4c +0x002 UseDefaultObject : 0 '' +0x003 CaseInsensitive : 0 '' +0x004 InvalidAttributes : 0xb0 +0x008 GenericMapping : _GENERIC_MAPPING +0x018 ValidAccessMask : 0x1f0fff +0x01c SecurityRequired : 0x1 '' +0x01d MaintainHandleCount : 0 '' +0x01e MaintainTypeList : 0 '' +0x020 PoolType : 0 ( NonPagedPool ) +0x024 DefaultPagedPoolCharge : 0x1000 +0x028 DefaultNonPagedPoolCharge : 0x290 +0x02c DumpProcedure : (null) +0x030 OpenProcedure : (null) +0x034 CloseProcedure : (null) +0x038 DeleteProcedure : 0x805d1774 void nt!PspProcessDelete+0 +0x03c ParseProcedure : (null) +0x040 SecurityProcedure : 0x805f7bbc long nt!SeDefaultObjectMethod+0 +0x044 QueryNameProcedure : (null) +0x048 OkayToCloseProcedure : (null) |
相关文章推荐
- Microsoft windows internals 学习笔记(1)
- Microsoft windows internals 学习笔记(2)
- Microsoft windows internals 学习笔记(3)
- Mcad学习笔记之Microsoft Windows服务
- Windows Internals 学习笔记(一)
- Dynamic CRM 2015学习笔记(6)没有足够的权限 - 您没有访问这些记录的权限。请联系 Microsoft Dynamics CRM 管理员
- cocos2dx学习笔记一:windows下创建工程方法和运行项目方法
- Microsoft.Practices.Unity学习笔记
- NVIDIA DIGITS 5.1-dev学习笔记之安装过程记录:Windows10 x64位系统 、 MicroSoft Caffe Master、CUDA 8.0 、Python 2.7
- 在Microsoft Windows中使用Apache(学习中……)
- node.js在windows下的学习笔记(3)---npm
- 【theano-windows】学习笔记七——logistic回归
- Windows 8 Directx 开发学习笔记(十二)利用混合实现浮在水面的木箱
- cocos2d-x学习笔记(18)--游戏打包(windows平台)
- Windows学习笔记10——图形基础<二>
- 【theano-windows】学习笔记十七——梯度中的consider_constant
- Microsoft .NET 的企业解决方案模式(学习笔记一)企业解决方案的构建模式
- 【theano-windows】学习笔记十三——去噪自编码器
- Windows 程序设计学习笔记(一)
- Windows编程 C++ DLL编程 学习笔记(一)静态链接库的创建和使用