| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2745 人关注过本帖
标题:关于OpenProcessToken的问题
取消只看楼主 加入收藏
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
结帖率:85.71%
收藏
 问题点数:0 回复次数:5 
关于OpenProcessToken的问题
下面是枚举进程信息时侯提升权限的代码     
            invoke    GetCurrentProcessId
            invoke    OpenProcess,PROCESS_ALL_ACCESS,FALSE,eax
            push    eax
            invoke    GetLastError
            pop    eax
            invoke    OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES,hToken
            invoke    GetLastError
这里调用OpenProcessToken失败用GelLastError返回998错误内存访问失败。
看了一些资料关于这类错误都是第三个参数引起的,这里需要传递引用过去,但是对于汇编这个参数就是DWORD类型,不知道要怎么弄了。
谁知道哪里有问题说下谢谢了!
搜索更多相关主题的帖子: 内存 信息 资料 
2009-10-05 13:28
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
收藏
得分:0 
;szPrivilege        db    'SeDebugPrivilege',0
;local    @stLUIDA:LUID_AND_ATTRIBUTES
;local    @stLUID:LUID
            invoke    GetCurrentProcessId
            invoke    OpenProcess,PROCESS_ALL_ACCESS,FALSE,eax
            push    eax
            invoke    GetLastError
            pop    eax
            invoke    OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES,offset hToken
            invoke    GetLastError
            invoke    LookupPrivilegeValue,NULL,addr szPrivilege,addr @stLUID
            mov    @stTokenP.PrivilegeCount,1
            invoke    lstrcpy,addr @stLUIDA.Luid,addr @stLUID
            push    SE_PRIVILEGE_ENABLED
            pop    @stLUIDA.Attributes
            invoke    lstrcpy,addr @stTokenP.Privileges,addr @stLUIDA
            invoke    AdjustTokenPrivileges,hToken,FALSE,addr @stTokenP,sizeof TOKEN_PRIVILEGES,NULL,NULL
            invoke    GetLastError
现在的问题是AdjustTokenPrivileges返回1用GetLastError返回1300:并非所有被引用的特权都指派给呼叫方
看别人说好像是本身权限不够不能提升权限这到底要怎么弄呢,就是想枚举所以进程在XP下的,谁能给个成功的代码么
2009-10-05 16:45
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
收藏
得分:0 
呵成功了可能是赋值有点问题
我用的代码
            Invoke  GetCurrentProcess
            invoke    OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY,offset hToken
            invoke    GetLastError
            invoke    LookupPrivilegeValue,NULL,addr szPrivilege,addr @stLUID
            mov    @stTokenP.PrivilegeCount,1
            push    @stLUID.LowPart
            pop    @stTokenP.Privileges[0].Luid.LowPart
            push    @stLUID.HighPart
            pop     @stTokenP.Privileges[0].Luid.HighPart
            mov    @stTokenP.Privileges[0].Attributes,SE_PRIVILEGE_ENABLED
            invoke    AdjustTokenPrivileges,hToken,FALSE,addr @stTokenP,sizeof TOKEN_PRIVILEGES,NULL,NULL
            invoke    GetLastError
            .if    eax!=ERROR_SUCCESS
                invoke   MessageBox,hWnd,addr szErrToken\
                    ,NULL,MB_OK or MB_ICONEXCLAMATION
            .endif
不过我有个小问题就是在枚举进程的时候我发现,我用Process32first和Process32Next遍历进程,但是显示出来跟资源管理器相比少了两个一个是taskmsg.exe一个是System idle p..
这是为什么呢?枚举的时候权限也要提升?
2009-10-05 18:04
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
收藏
得分:0 
哦又有个问题就是我一旦关闭了hToken提升权限的效果就没了,这个是为什么?
2009-10-05 18:19
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
收藏
得分:0 
你拿到的是个‘内核对象句柄’,释放了就不能再次访问,除非你再次获得它。就像打开一个文件一样,一旦你关闭了文件句柄,当然无法再访问了。
你的意思是创建快照的时候他会访问这个对象看权限?如果关闭了他无法访问就当你没有权限是这样理解么?
2009-10-05 23:05
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
收藏
得分:0 
又发现问题了不知道是我代码问题还是什么原因,快照csrss,lsass,360,avp等进程提升了SeDebugPrivilege权限仍然返回错误5访问失败。
提升权限应该是成功了,访问别的进程都可以,我用OD加载程序快照也同样失败,这应该不是权限问题了吧?OD是调试级权限啊。
看别人的好像用调试级就可以访问csrss了啊怎么我的失败了额- -!纠结了.........
大大们快来帮忙啊!
2009-10-06 10:15
快速回复:关于OpenProcessToken的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016436 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved