有关cm_key_node的问题
Windows内核调试
有关cm_key_node的问题
merry
2009-05-18, 15:36 下午
看到一个介绍注册表的文章,提到如下内容:
Quote:
------------------------------------------------------------------------------------------------
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
...
这个键是一个_CM_KEY_NODE结构,ValueList的值就是一个"单元索引",由这个"单元索引"我们可以找到该键的"键值列表单元",有了"键值列表单元",我们就可以找到"键值单元",有了"键值单元",我们就可以找到数据了.
------------------------------------------------------------------------------------------------
Q:请问该如何理解由valuelist找到数据的过程?能否用windbg查看的方式的验证?
Re: 有关cm_key_node的问题
MJ0011
2009-05-18, 17:07 下午
keynode->(GetCellRoutine)->cell data list->KeyList->GetCellRoutine->cell data
Re: 有关cm_key_node的问题
merry
2009-05-18, 17:29 下午
MJ0011前辈,你的回复对于我来说太简略了。
能否详细说明一下?
Re: 有关cm_key_node的问题
MJ0011
2009-05-18, 17:41 下午
自己看CmpFindNameInList
Re: 有关cm_key_node的问题
merry
2009-05-18, 19:03 下午
----------------------------------------
BOOLEAN
NTAPI
CmpFindNameInList
(
IN PHHIVE Hive,
IN PCHILD_LIST ChildList,
IN PUNICODE_STRING Name,
IN PULONG ChildIndex,
IN PHCELL_INDEX CellIndex );
----------------------------------------
??
Re: 有关cm_key_node的问题
benlong
2009-05-18, 20:10 下午
windbg里有一系列!reg命令可以一步步验证