内核中有个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. strcpy vs memcpy

    [本文连接] http://www.cnblogs.com/hellogiser/p/strcpy_vs_memcpy.html [分析] strcpy和memcpy都是标准C库函数,它们有下面的特点 ...

  2. django 添加comments app

    django 添加comments app 参看 django comments 文档 安装和配置comments 1.安装comments,运行:pip install django-contrib ...

  3. eclipse添加字体

    1.打开window—>Preferences—>General—>Appeatance—>Colors and Fonts—>Text Font—>Edit 2. ...

  4. bing壁纸xml地址

    http://www.bing.com/gallery/?src=livesino# http://www.bing.com/HPImageArchive.aspx?format=xml&id ...

  5. java 基础第一季

    1. i安装jdk ii 配置环境变量:JAVA_HOME 配置jdk的安装路径 path            配置命令文件的位置 bin目录的安装路径 PATH_HOME 配置库文件的位置   l ...

  6. Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析

    默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...

  7. ASM:《X86汇编语言-从实模式到保护模式》第七章应用例:用adc命令计算1到1000的累加

    在16位的处理器上,做加法的指令是add,但是他每次只能做8位或者16位的加法,除此之外,还有一个带进位的加法指令adc(Add With Carry),他的指令格式和add一样,目的操作数可以是8位 ...

  8. 获取指定文件下的所有file文件

    /** * 描述:获取所有的文件列表 * @param file * @param list * @return */ private List<File> getAllFiles(Fil ...

  9. iOS 日常工作之常用宏定义大全

    转自:http://www.jianshu.com/p/213b3b96cafe 前言: 在工作中, 很多小伙伴都会在PCH文件定义一些常用的宏,但是又怕写这些简单的宏浪费时间,又有时候忘记怎么定义了 ...

  10. IOS-委托代理(degegate)

    委托代理: 委托代理(degegate)顾名思义,把某个对象要做的事情委托给别的对象去做.那么别的对象就是这个对象的代理,代替它来打理要做的事.反映到程序中, 首先要明确一个对象的委托方是哪个对象,委 ...