我有一个问题。
如何在已经被另一个程序删除的进程中创建SeDebugPrivilege令牌?
var
NewState : TTokenPrivileges;
luid : TLargeInteger;
hToken : THandle;
ReturnLength : DWord;
begin
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil, 'SeDebugPrivilege', luid);
Memo1.Lines.Add(Format('Luid [%d]', [luid]));
NewState.PrivilegeCount := 1;
NewState.Privileges[0].Luid := luid;
NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, NewState, SizeOf(NewState), nil, ReturnLength);
CloseHandle(hToken);
此代码可以启用/禁用令牌(如果已经存在),但是如果令牌被删除,则不会再次添加。这就是我所需要的。
我问它是因为我不知道您是否知道名为Deep Freezer的程序,他从所有正在运行的进程中删除了SeDebugPrivilege特权。
谢谢。