首页
社区
课程
招聘
[求助]驱动 HKEY_CURRENT_USER 怎么可以求出来呢!
发表于: 2009-6-18 00:17 9652

[求助]驱动 HKEY_CURRENT_USER 怎么可以求出来呢!

2009-6-18 00:17
9652
HKEY_LOCAL_MACHINE   \Registry\Machine
HKEY_USERS    \Registry\User
HKEY_CLASSES_ROOT    没有
HKEY_CURRENT_USER  可以求出来!
在驱动中怎么求的  HKEY_CURRENT_USER  的路径呢?

高手或者版主 能给个求出的方法么?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
2
HKEY_CLASSES_ROOT其实是HKEY_LOCAL_MACHINE\SOFTWARE\Classes的映射,所以直接访问后者就行了。
HKEY_CURRENT_USER则是HKEY_USERS下的某一个子项。关键是要找到是哪一个。搜索一下“驱动中获取用户名”会得到一些对你有用的信息。观察了一下HKEY_USERS下的各个子项,好像只有当前登录用户使用的那个会出现Volatile Environment子项(其子键中包含用户环境变量信息),不知道是否可以通过这个来判断。
http://bbs.pediy.com/showthread.php?t=91760这一帖的用户遇到跟你一样的问题,提到了一个非文档的API,可以考虑使用。
2009-6-18 03:42
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
谢谢轩辕小聪~!
2009-6-18 09:43
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
RtlFormatCurrentUserKeyPath(&CurrentUserKeyPath);
InitializeObjectAttributes(&ObjectAttributes,&CurrentUserKeyPath,OBJ_CASE_IN
SENSITIVE,NULL,NULL);
Status = ZwOpenKey(&CurrentUserKeyHandle, KEY_READ, &ObjectAttributes);

呵呵,a了别人的代码,试验一下看可以不!
2009-6-18 09:57
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
哈哈,晚上看了一下弄出来了!不敢保留,与大家分享一下!
谢谢轩辕!

关键代码
1.#pragma comment(lib,"ntdll.lib")
2.extern "C"
3.NTSTATUS RtlFormatCurrentUserKeyPath( OUT PUNICODE_STRING  RegistryPath );

1.这个函数依赖 ntdll.lib
2.申明一下这个函数 因为是 c 所以extern"c"
下面是monitor KdPrint的信息


        UNICODE_STRING        CurrentUserKeyPath;
        NTSTATUS ntStatus1 = RtlFormatCurrentUserKeyPath(&CurrentUserKeyPath);
        if(NT_SUCCESS(ntStatus1))
        {
                KdPrint(("the current userKeyPath %wZ",&CurrentUserKeyPath));
        }
        else
        {
                KdPrint(("read current error"));
        }
上传的附件:
  • q.GIF (1.91kb,133次下载)
2009-6-18 21:47
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
靠,有点错误,怎么不是当前用户的,是令一个用户么?
上面的有点错误!不要误导了啊!
大牛们,这是为什么呢?难道只能扫描!Volatile Environment了么?
2009-6-18 22:05
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
7
zwquerykey,r3配合一下~
2009-6-18 22:40
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
好的,谢谢,呵呵!我看看!
qihoocom
又见着活的牛人了!
2009-6-18 23:08
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
zwquerykey是获得,多少个子项!
r3配合,你的意思,是r3给驱动发个信息么?
能详细说一下么?主要我很菜!大牛请原谅一下!
2009-6-18 23:17
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
10
RtlFormatCurrentUserKeyPath
读取的是当前进程的user的keypath

CurrentProcess是system自然,读出来的userkeypath。。。
2009-6-18 23:43
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
11
试试这样:
Ring3程序加载这个驱动后,用DeviceIoControl,驱动在IRP_MJ_DEVICE_CONTROL响应例程里用RtlFormatCurrentUserKeyPath,这样由于响应例程是在相应的进程中,就应该可以得到相应进程的用户对应的路径了。

刚刚试过了,这个方法OK,可以得到Ring3程序所属用户(非SYSTEM)的路径。
另外,在Windbg下看了RtlFormatCurrentUserKeyPath,得到的UNICODE_STRING的Buffer用完后应该要自己ExFreePool的吧。
2009-6-19 19:30
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
12
不是ExFreePool是RtlFreeUnicodeString吧~
2009-6-19 21:39
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
13
RtlFreeUnicodeString的实质就是对UNICODE_STRING的Buffer调用ExFreePool,并把UNICODE_STRING的所有域清0,所以也可以自己调用ExFreePool把Buffer释放掉啊
当然用RtlFreeUnicodeString比较合规范一点
2009-6-19 22:35
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
14
不合规范,要重写~~
现在很XX~
2009-6-20 11:53
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
有意思,收藏
2009-6-27 08:38
0
游客
登录 | 注册 方可回帖
返回
//