首先把这个HIVE文件读入内存,基地址加上一个页的大小就来到了第一个BIN,BIN头大小是0X20我们不用理,加上0X20后我们就来到了第一个CELL...即ROOTCELL...接着就是开始解释这个HIVE文件了
void ListValue( PCHAR keypath,; PCM_KEY_NODE KeyNode )
{
char *SubKeyName=keypath;
PCHAR val;
memcpy(keypath,&KeyNode->KeyName,KeyNode->KeyName);
keypath =KeyNode->KeyName_len;
printf("the key name;;;:%sn",SubKeyName);
}
void ListSubKeys( PCHAR keypath,; PCM_KEY_NODE KeyNode )
{
RootBin=(PCHAR)KeyNode-0x20;
PCM_KEY_FAST_INDEX dirKey = (PCM_KEY_FAST_INDEX)(RootBin KeyNode->Subkeys_offset);
for(ULONG index1=0;index1
{
PCM_KEY_FAST_INDEX subkey = (PCM_KEY_FAST_INDEX)((&dirKey->ValueData_Offset)[index1] RootBin);
if(dirKey->Signature[1]=="f")
{
ListValue(keypath,(PCM_KEY_NODE)((&dirKey->ValueData_Offset)[index1*2] RootBin));
}
else
for(ULONG index2=0;index2NumberOfKeys;index2)
{
ListValue(keypath,(PCM_KEY_NODE)((&subkey->ValueData_Offset)[index2] RootBin));
}
}
}
后注:在dump hive时,正常是没有问题的...但如果使用了combojiang那篇隐藏注册表里面的那个驱动程序来隐藏注册表...比如它里面隐藏了Services键下的子键Beep,,,那我们在dump Services时就会失败....也不知道是什么原因,,应该是被什么干扰了吧...不过你可以自己复制原始的HIVE文件,在解释它...这个程序再改改应该可以...不过到了这里你应该对HIVE文件有个大概的理解了..
推荐阅读
- 什么是速算啊
- 频率副词说一下有啥特点
- 天下九塞雁门为首的雁门关是哪 雁门关位于哪里
- 从官方下载中看破757的本质——756的新包装
- 床笠是什么床笠表示什么
- 虾底下的黑线是什么
- 日常冷知识
- 下冰雹会下雪吗
- word怎么批量下拉复制
- iCloud上的照片如何下载到手机?快速下载iCloud储存照片的3种方法