Установка/снятие Debug привелегии у текущего процесса
Материал из DRKB
Установка/снятие Debug привелегии у текущего процесса[править | править код]
{ **** UBPFD *********** by kladovka.net.ru ****
>> Установка/снятие Debug привелегии у текущего процесса
Функция устанавливает/снимает отладочные привелегии у
текущего процесса (можно выбрать и другой, изменив
GetCurrentProcess на нужный Handle ).
Актуально для совместного использования с ToolHelp - т.е. получения информации о процессах.
Зависимости: Windows
Copyright: 2000 Jeffrey Richter
Дата: 20 октября 2003 г.
********************************************** }
function EnableDebugPrivilege(const Value: Boolean): Boolean;
const
SE_DEBUG_NAME = 'SeDebugPrivilege';
var
hToken: THandle;
tp: TOKEN_PRIVILEGES;
d: DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then
begin
tp.PrivilegeCount := 1;
LookupPrivilegeValue(nil, SE_DEBUG_NAME, tp.Privileges[0].Luid);
if Value then
tp.Privileges[0].Attributes := $00000002
else
tp.Privileges[0].Attributes := $80000000;
AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d);
if GetLastError = ERROR_SUCCESS then
begin
Result := True;
end;
CloseHandle(hToken);
end;
end;
Пример использования:
// После этого можно смотреть информация о таких системных модулях как:
// winlogon.exe и servises.exe и д.р.
EnableDebugPrivilege(True); // включить
EnableDebugPrivilege(False); // выключить
ID: 02141