储巢HIVE及实现注册表隐藏

本文深入探讨了Windows注册表HIVE的内部结构,包括HBASE_BLOCK、HBIN、CM_KEY_NODE等关键数据结构。还介绍了如何通过隐藏注册表键的细胞索引来实现注册表项的隐藏,涉及GetCellRoutine的钩子方法。文章适合熟悉操作系统和注册表原理的读者。
摘要由CSDN通过智能技术生成

注册表是一组称为储巢的单独文件组成的.配置管理器从逻辑上将一个储巢分成一些称为块的分配单元.类似于文件系统中一个磁盘分成簇一样.定义是将注册表快的大小为4096字节.

储巢总是按照块的粒度来增加新的数据的.就算不够4096个字节也是一个增加块.

这个是储巢的结构定义:

typedef struct _HBASE_BLOCK

  {

  ULONG Signature; /* 签名ASCII-"regf" = 0x66676572 (小端序)*/

  ULONG Sequence1;

  ULONG Sequence2;

  LARGE_INTEGER TimeStamp; /* 最后一次写操作的时间戳 */

  ULONG Major; /* 主版本号 */

  ULONG Minor; /* 次版本号 */

  ULONG Type;

  ULONG Format;

  ULONG RootCell; /* 第一个键记录的偏移 */

  ULONG Length; /* 数据块长度 */

  ULONG Cluster;

  UCHAR name[64]; /* 储巢文件名 */

  ULONG Reserved1[99];

  ULONG CheckSum; /* 校验和 */

  ULONG Reserved2[894];

  ULONG BootType;

  ULONG BootRecover;

} HBASE_BLOCK, *PHBASE_BLOCK;

 

Windows将一个储巢所存储的注册表数据组织在一种称为巢室的容器中.一个巢室可以容纳一个键,一个值,一个安全描述符,一列子键,在巢室数据开始处的一个域描述了该巢室数据的类型.当一个巢室加入到一储巢中,而且该储巢必须进行扩展才能包含该巢室的时候,系统创建一个称为巢箱的分配单元.一个巢箱式新巢室正好扩展到下一个块的边界的大小.系统将巢室尾部和巢箱的尾部之间的任何空间都看出是空闲的空间。可以在分配给其他的巢室,

下面是巢箱的数据结构。

  typedef struct _HBIN

  {

  ULONG Signature; /* 签名 ASCII-"hbin" = 0x6E696268 (小端序) */

  ULONG FileOffset; /* 本巢箱相对第一个巢箱起始的偏移 */

  ULONG Size; /* 本巢箱的大小 */

  ULONG Reserved1[2];

  LARGE_INTEGER TimeStamp;

  ULONG Spare;

  } HBIN, *PHBIN;

巢室的数据类型:

键巢室:typedef struct _CM_KEY_NODE

  {

  USHORT Signature; /*

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值