如何获得正在运行的进程的 PROCESS_ALL_ACCESS 权限?

如何获得正在运行的进程的 PROCESS_ALL_ACCESS 权限?

我已经对游戏 AssualtCube 进行了破解(好吧,复制/粘贴)。破解的一部分涉及使用 OpenProcess() 获取具有 PROCESS_ALL_ACCESS 权限的 ac_client.exe 句柄。这在 Visual Studio 的集成调试器中运行良好,但失败了,在作为外部版本运行时产生 ERROR_ACCESS_DENIED。如果我在 Visual Studio 中拥有 PROCEESS_ALL_ACCESS 权限,那么应该有一种方法可以在 Visual Studio 之外获取这些权限。我已经以管理员身份运行。

答案1

来自帮助要打开另一个进程的句柄并获得完全访问权限,必须启用 SeDebugPrivilege 特权。有关更多信息,请参阅更改令牌中的特权。

这使用 WMI 来启用权限。用户拥有的大多数权限都已禁用,需要在代码中启用,程序才能使用它。

该示例使用localhost.ComputerName = "."表示当前计算机。

'CreateRemoteProcess.vbs
'Starts a program on a remote computer using WMI.
'Programs started on remote computers are invisible on that computer unlike programs started locally
ComputerName = "127.0.0.1"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Debug,Shutdown)}\\" & ComputerName & "\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")
intReturn = objProcess.Create("c:\windows\notepad", Null, objConfig, intProcessID)
If intReturn = 0 then
    wscript.echo "PID is " & intProcessID
Else
    Msg = "Error code " & intReturn & vbcrlf & vbcrlf
    Msg = Msg & "2   Access denied" & vbcrlf
    Msg = Msg & "3   Insufficient privilege" & vbcrlf
    Msg = Msg & "8   Unknown failure" & vbcrlf
    Msg = Msg & "9   Path not found" & vbcrlf
    Msg = Msg & "21  Invalid parameter" 
    wscript.echo Msg
End If

PS:这需要以管理员身份运行,非管理员无法启用 SeDebug。

相关内容