内核中有个PLIST_ENTRY CmpHiveListHead;
CmpHiveListHead = &CMHIVE.HiveList;

CMHIVE结构如下:
kd> dt _CMHIVE
nt!_CMHIVE
   +0x000 Hive             : _HHIVE
   +0x210 FileHandles      : [3] Ptr32 Void
   +0x21c NotifyList       : _LIST_ENTRY
   +0x224 HiveList         : _LIST_ENTRY
   +0x22c HiveLock         : Ptr32 _FAST_MUTEX
   +0x230 ViewLock         : Ptr32 _FAST_MUTEX
   +0x234 LRUViewListHead  : _LIST_ENTRY
   +0x23c PinViewListHead  : _LIST_ENTRY
   +0x244 FileObject       : Ptr32 _FILE_OBJECT
   +0x248 FileFullPath     : _UNICODE_STRING
   +0x250 FileUserName     : _UNICODE_STRING
   +0x258 MappedViews      : Uint2B
   +0x25a PinnedViews      : Uint2B
   +0x25c UseCount         : Uint4B
   +0x260 SecurityCount    : Uint4B
   +0x264 SecurityCacheSize : Uint4B
   +0x268 SecurityHitHint  : Int4B
   +0x26c SecurityCache    : Ptr32 _CM_KEY_SECURITY_CACHE_ENTRY
   +0x270 SecurityHash     : [64] _LIST_ENTRY
   +0x470 UnloadEvent      : Ptr32 _KEVENT
   +0x474 RootKcb          : Ptr32 _CM_KEY_CONTROL_BLOCK
   +0x478 Frozen           : UChar
   +0x47c UnloadWorkItem   : Ptr32 _WORK_QUEUE_ITEM
   +0x480 GrowOnlyMode     : UChar
   +0x484 GrowOffset       : Uint4B
   +0x488 KcbConvertListHead : _LIST_ENTRY
   +0x490 KnodeConvertListHead : _LIST_ENTRY
   +0x498 CellRemapArray   : Ptr32 _CM_CELL_REMAP_BLOCK

遍历CmpHiveListHead就能得到所有的HHIVE的地址,
HHIVE结构如下:
kd> dt _HHIVE
nt!_HHIVE
   +0x000 Signature        : Uint4B
   +0x004 GetCellRoutine   : Ptr32     _CELL_DATA* 
   +0x008 ReleaseCellRoutine : Ptr32     void 
   +0x00c Allocate         : Ptr32     void* 
   +0x010 Free             : Ptr32     void 
   +0x014 FileSetSize      : Ptr32     unsigned char 
   +0x018 FileWrite        : Ptr32     unsigned char 
   +0x01c FileRead         : Ptr32     unsigned char 
   +0x020 FileFlush        : Ptr32     unsigned char 
   +0x024 BaseBlock        : Ptr32 _HBASE_BLOCK
   +0x028 DirtyVector      : _RTL_BITMAP
   +0x030 DirtyCount       : Uint4B
   +0x034 DirtyAlloc       : Uint4B
   +0x038 RealWrites       : UChar
   +0x03c Cluster          : Uint4B
   +0x040 Flat             : UChar
   +0x041 ReadOnly         : UChar
   +0x042 Log              : UChar
   +0x044 HiveFlags        : Uint4B
   +0x048 LogSize          : Uint4B
   +0x04c RefreshCount     : Uint4B
   +0x050 StorageTypeCount : Uint4B
   +0x054 Version          : Uint4B
   +0x058 Storage          : [2] _DUAL

这里主要在 CmpHiveListHead 里的地址。实际上是 CMHIVE 结构的 hivelist地址。所有-0x30c(win7 32为是这样) 就是CMHIVE地址。

CallBack对象在

\\CallBack目录里

怎么遍历 \\CallBack目录  请参考    windows遍历驱动

POBJECT_DIRECTORY_ENTRY 结构里  Object 指向 CALLBACK_OBJECT 对象

jpg 改 rar

遍历CallBack对象 和 HHIVE对象的更多相关文章

  1. struts2:遍历自定义字符串数组,遍历Action实例所引用对象中的数组

    在struts2:OGNL表达式,遍历List.Map集合:投影的使用一文中已经讲述了OGNL遍历List.Map集合等功能. 本文简单写一个遍历数组的示范程序. 1. 遍历自定义字符串数组 < ...

  2. Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  3. Android(java)学习笔记44:Map集合的遍历之键值对对象找键和值

    1. Map集合的遍历之 键值对对象找 键和值: package cn.itcast_01; import java.util.HashMap; import java.util.Map; impor ...

  4. winform练习-通过遍历Control容器中的对象统一委托事件-楼盘选择器

    1.窗体布局如下,一个label标签内容如下,一个btnSave按钮,用于保存,其他九个按钮用于选择楼盘. 2. 按钮存于Control容器中,编写方法遍历容器中的button,通过条件过滤掉不是bu ...

  5. jQuery对象和DOM对象的互相转换【 转】

    jQuery对象转换为dom对象 只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的 ...

  6. jQuery编程基础精华01(jQuery简介,顶级对象$,jQuery对象、Dom对象,链式编程,选择器)

    jQuery简介 什么是jQuery? jQuery就是一个JavaScript函数库,没什么特别的.(开源)联想SQLHelper类 jQuery能做什么?jQuery是做什么的? jQuery本身 ...

  7. jQuery对象转换为DOM对象(转)

    jQuery对象转换为dom对象 只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的 ...

  8. 简述JavaScript对象、数组对象与类数组对象

    问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...

  9. jQuery介绍 DOM对象和jQuery对象的转换与区别

    jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery介绍      jQuery: http://jquery.com/      write less, do more.   j ...

随机推荐

  1. 常见web错误码 404 500

    404表示文件或资源未找到java WEB常见的错误代码1.1xx-信息提示:这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个1xx响应.100-继续.101-切换协议.2. ...

  2. Effective C++ -----条款10: 令operator=返回一个reference to *this

    比如: Widget& operator=(const Widget& rhs) { ... return* this; } 令赋值(assignment)操作符返回一个referen ...

  3. mysql时间字符串按年/月/天/时分组查询

    SELECT DATE_FORMAT( deteline, "%Y-%m-%d %H" ) , COUNT( * ) FROM test GROUP BY DATE_FORMAT( ...

  4. 【QT】C++ GUI Qt4 学习笔记3

    菜单界面的实现. 看书上第三章,好长,好多代码.我敲了半天,想看看效果,结果却显示不出来.仔细一看,发现spreadsheet的实现在第四章.郁闷.... 又到官网上下代码,结果居然不能运行.难道是因 ...

  5. 【Git】笔记3

    来源:廖雪峰 远程仓库 远程仓库采用github 准备工作:创建远程仓库 1.创建一个github账号 2.在本地设置ssh,获取/home/user/.ssh/id_rsa.pub内容 3.在git ...

  6. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  7. IOS - 消息推送原理和实现

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...

  8. Hibernate双向多对多对象关系模型映射

    1 双向many-to-many 业务模型: 描述员工和项目 一个员工同时可以参与多个项目 一个项目中可以包含多个员工 分析:数据库的数据模型,通过中间关系表,建立两个one-to-many构成man ...

  9. asp.net DataSet数据导出到Excel中

    方法: [STAThread]///这是必须的    public override void VerifyRenderingInServerForm(System.Web.UI.Control co ...

  10. Office文件的Open Xml 格式

    获取Office文件的Open Xml格式文件的步骤如下: 1.修改想要得到OpenXml格式文件的文件后缀名为.rar. 2.解压即可得到. 此时可以对xml文件进行操作,要想再次把这已经解压后的文 ...