liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2631回复:16

各位 DX,如果从 DRIVER 中得到一个进程所属的系统用户名?

楼主#
更多 发布于:2003-06-10 13:44
得到应用程序路径和名字是可以的,PEPROCESS 这个结构里好像没有用户名这个项目啊?

最新喜欢:

agchenagchen
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-10 15:13
一定要在Driver中得到吗,可否考虑应用程序得到,然后传递到Driver中?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-10 15:29
reference osr.

method:get sid->get user info.
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-10 16:29
to Allenzh
不能通过应用程序传递参数,所以才觉得有些难度,呵呵
to vcmfc
谢谢,已经在研究中。。
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-10 18:13
再请教各位 DX,得到 SID 之后,怎么得到相应的用户名呢?偶很菜,不好意思。谢谢
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-10 18:37
利用两个函数轻松搞定:
//
// 查询当前进程的令牌对象体
//
        HANDLE PsReferencePrimaryToken(PEPROCESS Process );
        
//
// 查询令牌的相关信息
//        
// 对应于APP中的GetTokenInformation()函数
//
        ZwQueryInformationToken (                          
            HANDLE TokenHandle,                            
            TOKEN_INFORMATION_CLASS TokenInformationClass,
            PVOID TokenInformation,
            ULONG TokenInformationLength,
            PULONG ReturnLength
            );


[编辑 -  6/10/03 by  slwqw]
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-10 20:07
问题是我得到 TokenInformation 这个指针后,强制转换成一个 SID_AND_ATTRIBUTES 对象,取得里面的 Sid 指针之后,再有什么办法得到它的实际用户名呢?SDK 中有 LookupAccountSid 这个方法可以直接从 SID 得到用户名,在 Kernel mode 有没有什么办法呢?而且这个 SID 指针里面好像没有包含用户名的信息啊。

下面是 MSDN 里面根据 SID 找实际用户名的过程:
The LookupAccountSid function attempts to find a name for the specified security identifier by first checking a list of well-known SIDs. If the supplied SID does not correspond to a well-known SID, the function checks built-in and administratively defined local accounts. Next, the function checks the primary domain. Security identifiers not recognized by the primary domain are checked against the trusted domains corresponding to their SID prefixes.

好像很复杂的说。
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-10 23:17
虽然OSR没有讲, 但是INSIDE PROGRAMMING还是有办法. 无需USER MODE PROCESS的介入:D

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\S-1-5-21-842925246-1383384898-xxxxxxx-xxxx
ProfileImagePath = %SystemDrive%\\Documents and Settings\\yyy

yyy is what you are interested in.
如果在打开此键出错, USER NAME就是SYSTEM. 因为系统还没有完全BOOT起来. ;)

不过获取TOKEN时除非你是FSD, 否则我打保票你会遇到问题. 嘿嘿. 如何解决, INSIDE PROGRAMMING当然也有办法. 不过不说, 你自己TRY.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
tanky
驱动牛犊
驱动牛犊
  • 注册日期2002-03-04
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-06-17 20:52
能不能从用户的进程取得token,然后赋给系统创建的进程,
我从内核访问网络邻居就有这个问题
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-06-18 20:39
还是无法从 Sid 得到用户名,读注册表
ProfileImagePath = %SystemDrive%\\Documents and Settings\\yyy
的方法有点问题,因为 yyy 并不是一定是由用户名组成的,可能还有其它形式,比如说我的机器超级用户的这个值就不是 Administrator,而是 Administrator.xxxx,也许 Crack LookupAccountSid 是最好的方法了。 :D ,在研究汇编。。。反正 boss 也不催。 :D :D

还有,发现 osr 上取 sid 的代码有点小问题
http://www.osr.com/ntinsider/1999/security2.htm
还有 pSid->SubAuthority 中,最后一个 SubAuthority 是用户的 UID,可惜不能当用户名用。要是能找到这个 UID 和用户名的对应关系就好了。
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-18 20:48
可惜啊,一个活生生的人~~~~~~~~~~~~~
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-06-18 20:55
啊?不要说得这么恐怖嘛。。。 :D :D
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-06-18 21:10
get PLUID->GetSecurityUserInfo()

我是在fsd得到, luo说非fsd是不行,俺没有试过。

用OSR的方法得到其LPUID,再用GetSecurityUserInfo取得用户信息,有用户名,pDomainName,pLogonServer。


 :D :D :D :D :D :D
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-06-19 00:38
我想了一下, 确实可以得到信息.
KSEDD.SYS中提供了对LSA的LPC访问. 已知LOGON SESSION ID. 在PASSIVE LEVEL下用户名, 登录域, 登录时间, 登录类型都可以得到.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-06-19 11:24
谢谢各位,特别是 lu0 和 vcmfc,已经搞定了,:D得到这个东西还真是麻烦。:cool: :) :D
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-06-19 11:50
忘了说一句,实验证明,在非 FSD 下也可得到。:D :D
本来想给两位多加点分的,可惜开始已经结贴了。 而且偶分数本来就不多了。 :(
liuyang714
驱动牛犊
驱动牛犊
  • 注册日期2003-06-04
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-06-19 11:57
借过,测试一下新头像。 :D
游客

返回顶部