试过msdn上的例子, CreateProcessAsUser 和CreateProcessWithLogonW 。
谁做过类似的吗?
12 个解决方案
#1
CreateProcessAsUser 绝对没有问题,楼主开启用户进程的时候,传入的token对不对?我看csdn上有个大牛贴过代码,是先获取了 explorer.exe的token,把他作为CreateProcessAsUser 的参数,我试过,楼主肯定参数没搞好
#2
CreateProcessAsUser 绝对没有问题,楼主开启用户进程的时候,传入的token对不对?我看csdn上有个大牛贴过代码,是先获取了 explorer.exe的token,把他作为CreateProcessAsUser 的参数,我试过,楼主肯定参数没搞好
#3
我不是用这种方法,而是用msdn 上的一个例子。
获取explorer.exe的token,要求已经有用户登陆了。 但是如果系统系统了,还没有用户登陆的话,这时候只有session0。所以这时候显然行不通。
获取explorer.exe的token,要求已经有用户登陆了。 但是如果系统系统了,还没有用户登陆的话,这时候只有session0。所以这时候显然行不通。
#4
session0里也是可以启动进程管理器的吧亲?
#5
那个获取explorer.exe的token,这个explorer.exe进程是其它登陆用于运行的。 我要启动的是windows media player,肯定不能是system用户的token
#6
我觉得是。。。你测一下吧亲
#7
我先测一下,回头再说
#8
未登录情况下,不能取得token
#9
亲,应该是没开吧,你开一下explorer.exe进程,再去获取啊。。。开进程很简单的啊
#10
#11
楼主可参见:
Administrator用户直接获取System权限(创建新System权限Token并调用CreateProcessAsUser)
说来真是沮丧,我连接两周都在研究跨seesion注入,跨session是没有问题,但是没有与CSRSS通信,导致注入后无法创建控制台、无法创建线程等必须调用CsrClientCallServer函数的功能,google翻遍了,kernel32.dll等源代码、汇编代码都跟到快速系统调用了还是不行,想尽了一切办法,都无法解决,半小时前才放弃,不再研究。
我这儿给楼主几个思路:
1.获取系统进程(比如winlogon.exe等的)Token,然后用此Token创建新进程;
2.创建系统权限的Token,用此Token创建新进程;
3.本地HOOK nt native api(好像是ZwCreateProcessEx还是NtCreateProcessEx,记不得了,没心情,都不想查了),这些native api创建进程有一个句柄,表示父进程的句柄,把winlogon等系统进程的句柄传进入,其他不变,然后创建进程,就会是system的进程;
4.远程注入winlogon(可使用CreateRemoteThread),然后在注入的dll里创建进程,自然这个进程就是系统进程了;
5.使用更加内核的nt native api RtlCreateUserThread和NtQueueApcThread进入注入,这个方法可以跨session,也是我所知目前*的方法,问题就是上面我所提及的,无法创建进程。
2008下的服务,session好像是0,而且权限也比一般程序高,很难搞定。
楼主上想以系统权限启动windows media player,还是仅仅想让一个服务启动windows media player?
说来真是沮丧,我连接两周都在研究跨seesion注入,跨session是没有问题,但是没有与CSRSS通信,导致注入后无法创建控制台、无法创建线程等必须调用CsrClientCallServer函数的功能,google翻遍了,kernel32.dll等源代码、汇编代码都跟到快速系统调用了还是不行,想尽了一切办法,都无法解决,半小时前才放弃,不再研究。
我这儿给楼主几个思路:
1.获取系统进程(比如winlogon.exe等的)Token,然后用此Token创建新进程;
2.创建系统权限的Token,用此Token创建新进程;
3.本地HOOK nt native api(好像是ZwCreateProcessEx还是NtCreateProcessEx,记不得了,没心情,都不想查了),这些native api创建进程有一个句柄,表示父进程的句柄,把winlogon等系统进程的句柄传进入,其他不变,然后创建进程,就会是system的进程;
4.远程注入winlogon(可使用CreateRemoteThread),然后在注入的dll里创建进程,自然这个进程就是系统进程了;
5.使用更加内核的nt native api RtlCreateUserThread和NtQueueApcThread进入注入,这个方法可以跨session,也是我所知目前*的方法,问题就是上面我所提及的,无法创建进程。
2008下的服务,session好像是0,而且权限也比一般程序高,很难搞定。
楼主上想以系统权限启动windows media player,还是仅仅想让一个服务启动windows media player?
#12
再多说一句:使用Token创建进程的方法,要需要很多权限,各种麻烦,最主要的是SE_ASSIGNPRIMARYTOKEN_NAME和SE_CREATE_TOKEN_NAME,可以通过编程实现获得,也可以通过组策略来改,但都必须注销才生效,这也是我所不想用的原因。楼主若想用这种办法,多看看MSDN,打开什么句柄,干什么以,需要什么权限这些,MSDN上说得很详细。
#1
CreateProcessAsUser 绝对没有问题,楼主开启用户进程的时候,传入的token对不对?我看csdn上有个大牛贴过代码,是先获取了 explorer.exe的token,把他作为CreateProcessAsUser 的参数,我试过,楼主肯定参数没搞好
#2
CreateProcessAsUser 绝对没有问题,楼主开启用户进程的时候,传入的token对不对?我看csdn上有个大牛贴过代码,是先获取了 explorer.exe的token,把他作为CreateProcessAsUser 的参数,我试过,楼主肯定参数没搞好
#3
我不是用这种方法,而是用msdn 上的一个例子。
获取explorer.exe的token,要求已经有用户登陆了。 但是如果系统系统了,还没有用户登陆的话,这时候只有session0。所以这时候显然行不通。
获取explorer.exe的token,要求已经有用户登陆了。 但是如果系统系统了,还没有用户登陆的话,这时候只有session0。所以这时候显然行不通。
#4
session0里也是可以启动进程管理器的吧亲?
#5
那个获取explorer.exe的token,这个explorer.exe进程是其它登陆用于运行的。 我要启动的是windows media player,肯定不能是system用户的token
#6
我觉得是。。。你测一下吧亲
#7
我先测一下,回头再说
#8
未登录情况下,不能取得token
#9
亲,应该是没开吧,你开一下explorer.exe进程,再去获取啊。。。开进程很简单的啊
#10
#11
楼主可参见:
Administrator用户直接获取System权限(创建新System权限Token并调用CreateProcessAsUser)
说来真是沮丧,我连接两周都在研究跨seesion注入,跨session是没有问题,但是没有与CSRSS通信,导致注入后无法创建控制台、无法创建线程等必须调用CsrClientCallServer函数的功能,google翻遍了,kernel32.dll等源代码、汇编代码都跟到快速系统调用了还是不行,想尽了一切办法,都无法解决,半小时前才放弃,不再研究。
我这儿给楼主几个思路:
1.获取系统进程(比如winlogon.exe等的)Token,然后用此Token创建新进程;
2.创建系统权限的Token,用此Token创建新进程;
3.本地HOOK nt native api(好像是ZwCreateProcessEx还是NtCreateProcessEx,记不得了,没心情,都不想查了),这些native api创建进程有一个句柄,表示父进程的句柄,把winlogon等系统进程的句柄传进入,其他不变,然后创建进程,就会是system的进程;
4.远程注入winlogon(可使用CreateRemoteThread),然后在注入的dll里创建进程,自然这个进程就是系统进程了;
5.使用更加内核的nt native api RtlCreateUserThread和NtQueueApcThread进入注入,这个方法可以跨session,也是我所知目前*的方法,问题就是上面我所提及的,无法创建进程。
2008下的服务,session好像是0,而且权限也比一般程序高,很难搞定。
楼主上想以系统权限启动windows media player,还是仅仅想让一个服务启动windows media player?
说来真是沮丧,我连接两周都在研究跨seesion注入,跨session是没有问题,但是没有与CSRSS通信,导致注入后无法创建控制台、无法创建线程等必须调用CsrClientCallServer函数的功能,google翻遍了,kernel32.dll等源代码、汇编代码都跟到快速系统调用了还是不行,想尽了一切办法,都无法解决,半小时前才放弃,不再研究。
我这儿给楼主几个思路:
1.获取系统进程(比如winlogon.exe等的)Token,然后用此Token创建新进程;
2.创建系统权限的Token,用此Token创建新进程;
3.本地HOOK nt native api(好像是ZwCreateProcessEx还是NtCreateProcessEx,记不得了,没心情,都不想查了),这些native api创建进程有一个句柄,表示父进程的句柄,把winlogon等系统进程的句柄传进入,其他不变,然后创建进程,就会是system的进程;
4.远程注入winlogon(可使用CreateRemoteThread),然后在注入的dll里创建进程,自然这个进程就是系统进程了;
5.使用更加内核的nt native api RtlCreateUserThread和NtQueueApcThread进入注入,这个方法可以跨session,也是我所知目前*的方法,问题就是上面我所提及的,无法创建进程。
2008下的服务,session好像是0,而且权限也比一般程序高,很难搞定。
楼主上想以系统权限启动windows media player,还是仅仅想让一个服务启动windows media player?
#12
再多说一句:使用Token创建进程的方法,要需要很多权限,各种麻烦,最主要的是SE_ASSIGNPRIMARYTOKEN_NAME和SE_CREATE_TOKEN_NAME,可以通过编程实现获得,也可以通过组策略来改,但都必须注销才生效,这也是我所不想用的原因。楼主若想用这种办法,多看看MSDN,打开什么句柄,干什么以,需要什么权限这些,MSDN上说得很详细。