|
|
|
|
|
|
|
Windows内核调试
帖子发起人: merry 发起时间: 2009-05-18 15:36 下午 回复: 5
|
帖子排序:
|
|
|
|
2009-05-18, 15:36 下午
|
merry
注册: 2008-09-26
发 贴: 61
|
|
|
看到一个介绍注册表的文章,提到如下内容: 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查看的方式的验证?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-05-18, 17:07 下午
|
MJ0011
注册: 2008-04-24
发 贴: 112
|
|
|
keynode->(GetCellRoutine)->cell data list->KeyList->GetCellRoutine->cell data
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-05-18, 17:29 下午
|
merry
注册: 2008-09-26
发 贴: 61
|
|
|
MJ0011前辈,你的回复对于我来说太简略了。
能否详细说明一下?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-05-18, 17:41 下午
|
MJ0011
注册: 2008-04-24
发 贴: 112
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-05-18, 19:03 下午
|
merry
注册: 2008-09-26
发 贴: 61
|
|
|
----------------------------------------
BOOLEAN
NTAPI CmpFindNameInList( IN PHHIVE Hive,
IN PCHILD_LIST ChildList,
IN PUNICODE_STRING Name,
IN PULONG ChildIndex,
IN PHCELL_INDEX CellIndex
); ----------------------------------------
??
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-05-18, 20:10 下午
|
benlong
注册: 2008-10-01
发 贴: 11
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » Windows内核调试 » Re: 有关cm_key_node的问题
|
|
|
|
|
|