当前位置: 首页> 健康> 养生 > Windows内核函数 - 枚举子键

Windows内核函数 - 枚举子键

时间:2025/7/8 8:24:17来源:https://blog.csdn.net/wendyWJGU/article/details/141820299 浏览次数:0次

    和枚举子项类似,枚举自检是通过ZwQueryKey和ZwEnumerateValueKey两个函数的配合完成的。
ZwEnumerateValueKey函数的使用和ZwEnumerateKey函数的使用类似。

下面的例子演示了如何在驱动程序中枚举子键。

	UNICODE_STRING RegUnicodeStr;HANDLE hRegister;// 初始化 UNICODE_STRINGRtlInitUnicodeString(&RegUnicodeStr, MY_REG_SOFTWARE_KEY_NAME);OBJECT_ATTRIBUTES objectAttributes;// 初始化objectAttributesInitializeObjectAttributes(&objectAttributes,&RegUnicodeStr,OBJ_CASE_INSENSITIVE, // 对大小写敏感NULL,NULL);// 打开注册表项NTSTATUS ntStatus = ZwOpenKey(&hRegister,KEY_ALL_ACCESS,&objectAttributes);// 判断操作是否成功if (NT_SUCCESS(ntStatus)){KdPrint(("Open register successfully. \n"));}// 第一次调用ZwQueryKey,为了获取PKEY_FULL_INFORMATION 数据的长度ULONG ulSize;ZwQueryKey(hRegister,KeyFullInformation,NULL,0,&ulSize);PKEY_FULL_INFORMATION pfi =(PKEY_FULL_INFORMATION)ExAllocatePool(PagedPool, ulSize);// 第二次调用ZwQueryKey,为了获取 KEY_FULL_INFORMATION 数据ZwQueryKey(hRegister,KeyFullInformation,pfi,ulSize,&ulSize);for (ULONG i = 0; i < pfi->Values; i++){// 枚举注册表 第一次调用 ZwEnumerateKey, 为了获取 KEY_VALUE_BASIC_INFORMATION 数据的长度ZwEnumerateValueKey(hRegister,i,KeyValueBasicInformation,NULL,0,&ulSize);PKEY_VALUE_BASIC_INFORMATION pbi =(PKEY_VALUE_BASIC_INFORMATION)ExAllocatePool(PagedPool, ulSize);// 枚举注册表 第二次调用 ZwEnumerateKey, 为了获取 KEY_VALUE_BASIC_INFORMATION 数据ZwEnumerateValueKey(hRegister,i,KeyValueBasicInformation,pbi,ulSize,&ulSize);UNICODE_STRING uniKeyName;uniKeyName.Length = pbi->NameLength;uniKeyName.MaximumLength = pbi->NameLength;uniKeyName.Buffer = pbi->Name;KdPrint(("The %d sub value name: %wZ\n", i, &uniKeyName));if (pbi->Type == REG_SZ){KdPrint(("The sub value type : REG_SZ\n"));}else if (pbi->Type == REG_MULTI_SZ){KdPrint(("The sub value type : REG_MULTI_SZ\n"));}else if (pbi->Type == REG_DWORD){KdPrint(("The sub value type : REG_DWORD\n"));}else if (pbi->Type == REG_BINARY){KdPrint(("The sub value type : REG_BINARY\n"));}// 回收内存ExFreePool(pbi);}// 回收内存ExFreePool(pfi);// 关闭句柄ZwClose(hRegister);

关键字:Windows内核函数 - 枚举子键

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: