驱动开发之注册表:获取注册表HKEY_CURRENT_USER对应路径(SID)

在内核中hook注册表必须要使用转换后的路径,例如HKEY_LOCAL_MACHINE的路径对应的是“\Registry\Machine”,但是HKEY_CURRENT_USER相对比较特殊,因为它不是一个固定的值,需要你根据其他东西判断。因此本文给出几种获取HKEY_CURRENT_USER对应路径的方法。

方法一 根据注册表项获取

我最开始使用的获取HKEY_CURRENT_USER对应路径的方法就是这个。
具体大家可以参考这位博主:获取HKEY_CURRENT_USER方法一.

上面这篇博文讲得非常详细,我也实地使用过,确实能获取到相对应的路径。
但是存在几个比较大的问题:
1.主要判断依据就是注册表项中大于20个字节的项,但是太表面
2.无法应对存在多个用户的情况,结果不准确
3.该方法依赖的注册表项在win10中不存在

方法二 利用token获取sid

相较于方法一,通过token获取sid再拼接得到对应路径的方法更加稳定,并且不受用户多少的限制。
HKEY_CURRENT_USER对应路径本质上是\REGISTRY\USER+SID,因此获取对应路径可以等价于获取SID。
具体的方法思路可参照该博客:
获取HKEY_CURRENT_USER方法二.

获取SID总体来说在ring3比较容易,在ring0我目前还没有找到比较简便的途径,该博文有具体介绍:获取用户SID.
但目前我还停留在挂载当前进程上,而不能到指定进程如“explorer.exe”上,因此如果用当前进程用管理员权限打开,则获取的SID还是管理员的SID。

方法三 借助应用层

因为在ring3获取sid相对简单,大家可以通过内核和应用层的通信机制,从应用层获取了正确的SID后,传送到内核,再拼接得到对应的HKEY_CURRENT_USER路径。

如在cmd中输入 whoami /user就可以得到当前用户SID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值