Re: 有关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命令可以一步步验证

Powered by Community Server Powered by CnForums.Net