内核里操作注册表
RING0 操作注册表和 RING3 的区别也不大,同样是“获得句柄->执行操作->关闭句柄”的模式,同样也只能使用内核 API 不能使用 WIN32API。不过内核里有一套 RTL 函数,把 Zw系列的注册表函数进行了封装,也就是说,只剩下“执行操作”这一步了。
接下来说说注册表的本质。注册表其实是文件,它存储在 c:\windows\system32\config
这个目录下(打开目录,看到那几个带锁图标的文件就是。为什么带锁?因为被 SYSTEM 进
程独占访问了)。注册表文件被称为 HIVE 文件,此格式是微软专用的,不公开,每个系统都不一定相同,但总体来说变化不大。当系统关机之前,或者调用 ZwFlushKey 时,把内存中的修改存入磁盘。另外,我们用 WINDOWS 自带的注册表编辑器看到的注册表有 5 个根项,其实 这 是 “ 幻 象 ”, 真 正 的 根 项 只 有 两 个 : HKEY_LOCAL_MACHINE 和 HKEY_USERS 。HKEY_CLASSES_ROOT 和 HKEY_CURRENT_CONFIG 其实都是 HKEY_LOCAL_MACHINE

本文介绍了在Win64驱动中如何进行注册表操作,虽然与用户态(RING3)相似,但需使用内核API。注册表本质上是存储在系统目录的HIVE文件,其根项只有两个:HKEY_LOCAL_MACHINE和HKEY_USERS。常见操作包括新建KEY、设置VALUE等,而Zw函数是进行这些操作的关键。
最低0.47元/天 解锁文章
3397

被折叠的 条评论
为什么被折叠?



