日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

簡單認(rèn)識下注冊表的HIVE文件格式

目錄
1 用windbg簡單認(rèn)識下HIVE文件
2 用ZwSaveKey生成一個(gè)HIVE文件
3 ring3來簡單解釋這個(gè)HIVE文件
1 用windbg簡單認(rèn)識下HIVE文件
物理上的HIVE文件
1 注冊表是由許多個(gè)HIVE文件組成的
2 一個(gè)HIVE文件由許多個(gè)BIN組成,一般一個(gè)HIVE文件的開頭會(huì)有一個(gè)文件頭,用與描述這個(gè)HIVE文件的一些全局信息
3 一個(gè)BIN由許多個(gè)CELL組成
而CELL有好幾種類型
比如 key cell(cm_key_node) value cell(CM_KEY_VALUE) subbkey-list cell,value-
list cell等
一個(gè)HIVE文件的結(jié)構(gòu)
------------- |
_HBASE_BLOCK |
_BIN0;;;;;|
_BIN1;;;;;|
_BIN2;;;;;|
:;;;;;|
:;;;;;|
_BINx;;;;;|
------------- |
一般自己映射HIVE文件,得到映射的基地址,這個(gè)基地址加上1頁的大小就來到第一個(gè)BIN了
,BIN也是一個(gè)數(shù)據(jù)結(jié)構(gòu),里面也包含了一些描述這個(gè)BIN的信息,我們稱之為BIN頭,一個(gè)BIN
頭的大小一般是0X20,所以一個(gè)BIN后的0X20開始就是我們的第一個(gè)CELL了,怎樣把一個(gè)鍵及其下面的子鍵保存為HIVE文件,微軟提供了API RegSaveKey,建議學(xué)習(xí)的時(shí)候用這個(gè)API來生成一個(gè)簡單的HIVE文件,然后用WINHEX之類的工具查看該HIVE文件的內(nèi)部,知道個(gè)大概
注冊表相關(guān)的函數(shù)
用戶態(tài)的regxxx
內(nèi)核的NT和CM系列(關(guān)于CM系列的,一般都是沒有導(dǎo)出的,如果想使用可以靠導(dǎo)出的獲取沒
導(dǎo)出的方法)
實(shí)驗(yàn):
0 用winHex打開一個(gè)HIVE文件,看看其里面的內(nèi)容
1了解與注冊表有關(guān)的幾個(gè)結(jié)構(gòu)
用命令 dt nt!*cm*
這樣就會(huì)列出一大堆數(shù)據(jù)結(jié)構(gòu)出來,關(guān)于每個(gè)數(shù)據(jù)結(jié)構(gòu)是怎樣的,自己再dt看
比較重要的有
(HBASE_BLOCK)
NT!_CMHIVE
NT!_CMHIVE
NT!_CM_KEY_HASH
NT!_CM_KEY_BODY
NT!_CM_KEY_NODE
NT!_CM_KEY_VALUE
NT!_CM_KEY_SECURITY
NT!_CM_KEY_CONTROL_BLOCK
2一個(gè)簡單的實(shí)驗(yàn)
lkd> !reg dumppool
...略,這里會(huì)列出許多的HIVE
dumping hive at e1022b60 (NONAME)
Stable Length = 1000
1/1 pages present
Volatile Length = 1000
can"t read HMAP_ENTRY at e1b16000
0/1 pages present
Total pages present = 4311 / 14680
【簡單認(rèn)識下注冊表的HIVE文件格式】用!reg baseblock查看這個(gè)HIVE的基塊
lkd> !reg baseblock e1022b60
FileName : NONAME
Signature: HBASE_BLOCK_SIGNATURE
Sequence1: 1
Sequence2: 1
TimeStamp: 0 0
Major;: 1
Minor;: 3
Type;;: HFILE_TYPE_PRIMARY
Format: HBASE_FORMAT_MEMORY
RootCell : 20
Length: 0
Cluster : 1
CheckSum : 0

用!reg openkeys列出HIVE文件所有打開的鍵
lkd> !reg openkeys e1022b60
Index 48: 1cbf04a8 kcb=e1035a70 cell=00000188 f=00200004 REGISTRYUSER
Index 1b8: dc72ea09 kcb=e3fefb48 cell=80000020 f=00300008
REGISTRYUSERS-1-5-18
Index 595: d936a631 kcb=e1035008 cell=00000020 f=002c0000 REGISTRY
Index 698: bd68092e kcb=e1035248 cell=00000120 f=00200004
REGISTRYMACHINE
用!reg cellindex查看一下打開鍵的CELL單元.它是一個(gè)_cm_key_node結(jié)構(gòu)
kd> !reg cellindex e1022b60 0x120
Map = e1022bc0 Type = 0 Table = 0 Block = 0 Offset = 120
MapTable;;= e1033000
BlockAddress = e1032000
pcell: e1032124
得到CELL的地址pcell: e1032124后,接著
lkd> dt _cm_key_node e1032124
nt!_CM_KEY_NODE
nt!_CM_KEY_NODE
0x000 Signature;;;;;: 0x6b6e
0x002 Flags;: 0x20
0x004 LastWriteTime;: _LARGE_INTEGER 0x1c8a59a`913acf5a
0x00c Spare;: 0
0x010 Parent: 0x20
0x014 SubKeyCounts;;: [2] 5
0x01c SubKeyLists;;;: [2] 0x448
0x024 ValueList;;;;;: _CHILD_LIST
0x01c ChildHiveReference : _CM_KEY_REFERENCE
0x02c Security : 0x78
0x030 Class;: 0xffffffff
0x034 MaxNameLen;;;;: 0x10
0x038 MaxClassLen;;;: 0
0x03c MaxValueNameLen : 0
0x040 MaxValueDataLen : 0
0x044 WorkVar; : 0
0x048 NameLength;;;;: 7
0x04a ClassLength;;;: 0
0x04c Name;;: [1] 0x414d
我們來解讀這里的信息:
10x000 Signature;;;;;: 0x6b6e 0x6b6e表示NK,_cm_key_node結(jié)構(gòu)的標(biāo)識符

推薦閱讀