9 个解决方案
#1
不是太懂你说的这个,试试debug权限?
BOOL EnablePrivilege(LPCSTR lpName, BOOL fEnable) //提升打开进程的权限到DEBUG
{
HANDLE hObject;
LUID Luid;
TOKEN_PRIVILEGES NewStatus;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
return FALSE;
if (LookupPrivilegeValue(NULL, lpName, &Luid))
{
NewStatus.Privileges[0].Luid = Luid;
NewStatus.PrivilegeCount = 1;
NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);
CloseHandle(hObject);
return TRUE;
}
return FALSE;
}
EnablePrivilege(SE_DEBUG_NAME,TRUE);
BOOL EnablePrivilege(LPCSTR lpName, BOOL fEnable) //提升打开进程的权限到DEBUG
{
HANDLE hObject;
LUID Luid;
TOKEN_PRIVILEGES NewStatus;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
return FALSE;
if (LookupPrivilegeValue(NULL, lpName, &Luid))
{
NewStatus.Privileges[0].Luid = Luid;
NewStatus.PrivilegeCount = 1;
NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);
CloseHandle(hObject);
return TRUE;
}
return FALSE;
}
EnablePrivilege(SE_DEBUG_NAME,TRUE);
#2
EnablePrivilege(SE_DEBUG_NAME,TRUE);//貌似第一个参数就可以改为SYSTEM权限。SE_SYSTEM_XXXXX参数太多,我不知道是哪一个。你自己试试吧。
#3
只有SYSTEM用户才能使用这个方法赋予SE_ASSIGNPRIMARYTOKEN_NAME特权
http://www.microsoft.com/msj/0899/security/securitytextfigs.htm
http://www.microsoft.com/msj/0899/security/securitytextfigs.htm
#4
EnablePrivilege(SE_ASSIGNPRIMARYTOKEN_NAME,TRUE);//这样需要系统权限的才能赋予?
那我就爱莫能助了。
帮我看看这个怎么解决呗,大半夜的,没个活人- -
http://topic.csdn.net/u/20120113/00/ce433022-dcda-49ef-b2fa-ffe0a7c4748f.html
那我就爱莫能助了。
帮我看看这个怎么解决呗,大半夜的,没个活人- -
http://topic.csdn.net/u/20120113/00/ce433022-dcda-49ef-b2fa-ffe0a7c4748f.html
#6
需要 SE_ASSIGNPRIMARYTOKEN_NAME 的api,是不是得需要 LocalSystem上下文才可以?
那必须以 SYSTEM权限 启动你的目标程序。
启动者,也就是已注册的系统服务了, 也是你要你自己写。或者你的代码本身就是系统服务。
进程启动后,就无法 增加 特权了。
考虑到UAC兼容,或者 非管理员账户 环境,估计没有其他稳定的方法了,除了找漏洞。
那必须以 SYSTEM权限 启动你的目标程序。
启动者,也就是已注册的系统服务了, 也是你要你自己写。或者你的代码本身就是系统服务。
进程启动后,就无法 增加 特权了。
考虑到UAC兼容,或者 非管理员账户 环境,估计没有其他稳定的方法了,除了找漏洞。
#7
首先获得调试特权,打开一个SYSTEM进程,比如用CsrGetProcessId得到csrss的pid
然后用RtlCreateUserProcess以它作为被继承进程创建一个进程,新的进程就是SYSTEM账户
然后用RtlCreateUserProcess以它作为被继承进程创建一个进程,新的进程就是SYSTEM账户
#8
让一个Service来启动你的进程
#9
楼主的意思是提升,说明进程已经启动了的
#1
不是太懂你说的这个,试试debug权限?
BOOL EnablePrivilege(LPCSTR lpName, BOOL fEnable) //提升打开进程的权限到DEBUG
{
HANDLE hObject;
LUID Luid;
TOKEN_PRIVILEGES NewStatus;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
return FALSE;
if (LookupPrivilegeValue(NULL, lpName, &Luid))
{
NewStatus.Privileges[0].Luid = Luid;
NewStatus.PrivilegeCount = 1;
NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);
CloseHandle(hObject);
return TRUE;
}
return FALSE;
}
EnablePrivilege(SE_DEBUG_NAME,TRUE);
BOOL EnablePrivilege(LPCSTR lpName, BOOL fEnable) //提升打开进程的权限到DEBUG
{
HANDLE hObject;
LUID Luid;
TOKEN_PRIVILEGES NewStatus;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hObject))
return FALSE;
if (LookupPrivilegeValue(NULL, lpName, &Luid))
{
NewStatus.Privileges[0].Luid = Luid;
NewStatus.PrivilegeCount = 1;
NewStatus.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
AdjustTokenPrivileges(hObject, FALSE, &NewStatus, 0, 0, 0);
CloseHandle(hObject);
return TRUE;
}
return FALSE;
}
EnablePrivilege(SE_DEBUG_NAME,TRUE);
#2
EnablePrivilege(SE_DEBUG_NAME,TRUE);//貌似第一个参数就可以改为SYSTEM权限。SE_SYSTEM_XXXXX参数太多,我不知道是哪一个。你自己试试吧。
#3
只有SYSTEM用户才能使用这个方法赋予SE_ASSIGNPRIMARYTOKEN_NAME特权
http://www.microsoft.com/msj/0899/security/securitytextfigs.htm
http://www.microsoft.com/msj/0899/security/securitytextfigs.htm
#4
EnablePrivilege(SE_ASSIGNPRIMARYTOKEN_NAME,TRUE);//这样需要系统权限的才能赋予?
那我就爱莫能助了。
帮我看看这个怎么解决呗,大半夜的,没个活人- -
http://topic.csdn.net/u/20120113/00/ce433022-dcda-49ef-b2fa-ffe0a7c4748f.html
那我就爱莫能助了。
帮我看看这个怎么解决呗,大半夜的,没个活人- -
http://topic.csdn.net/u/20120113/00/ce433022-dcda-49ef-b2fa-ffe0a7c4748f.html
#5
楼主可参考
http://www.360doc.com/content/11/0525/10/61151_119230711.shtml
个人感觉此文思路比较清晰,希望有所帮助。
个人感觉此文思路比较清晰,希望有所帮助。
#6
需要 SE_ASSIGNPRIMARYTOKEN_NAME 的api,是不是得需要 LocalSystem上下文才可以?
那必须以 SYSTEM权限 启动你的目标程序。
启动者,也就是已注册的系统服务了, 也是你要你自己写。或者你的代码本身就是系统服务。
进程启动后,就无法 增加 特权了。
考虑到UAC兼容,或者 非管理员账户 环境,估计没有其他稳定的方法了,除了找漏洞。
那必须以 SYSTEM权限 启动你的目标程序。
启动者,也就是已注册的系统服务了, 也是你要你自己写。或者你的代码本身就是系统服务。
进程启动后,就无法 增加 特权了。
考虑到UAC兼容,或者 非管理员账户 环境,估计没有其他稳定的方法了,除了找漏洞。
#7
首先获得调试特权,打开一个SYSTEM进程,比如用CsrGetProcessId得到csrss的pid
然后用RtlCreateUserProcess以它作为被继承进程创建一个进程,新的进程就是SYSTEM账户
然后用RtlCreateUserProcess以它作为被继承进程创建一个进程,新的进程就是SYSTEM账户
#8
让一个Service来启动你的进程
#9
楼主的意思是提升,说明进程已经启动了的