Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Установка или снятие Debug привелегии у текущего процесса

Delphi , Программа и Интерфейс , Процессы и Сервисы

Установка или снятие Debug привелегии у текущего процесса

Автор: Мироводин Дмитрий
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Установка/снятие Debug привелегии у текущего процесса

Функция устанавливает/снимает отладочные привелегии у текущего процесса
(можно выбрать и другой, изменив GetCurrentProcess на нужный Handle ).

Актуально для совместного использования с ToolHelp -
т.е. получения информации о процессах.

Зависимости: Windows
Автор:       Мироводин Дмитрий (адаптация), mirovodin@mail.ru
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); // выключить

Привет! Я перевёл текст на русский язык:

Это фрагмент кода Delphi, который позволяет включать или отключать привилегию отладки для текущего процесса. Функция EnableDebugPrivilege принимает булевое значение в качестве аргумента, которое определяет, включать или отключать привилегию.

Вот разбивка кода:

  1. Функция объявляет несколько переменных: hToken, tp и d. hToken - это.handle к токену текущего процесса, tp - структура TOKEN_PRIVILEGES, содержащая информацию о привилегиях, а d - DWORD-переменная для хранения кодов ошибок.
  2. Функция сначала пытается открыть токен текущего процесса с помощью функции OpenProcessToken. Если это успешно, она настраивает структуру tp, установив поле PrivilegeCount в 1 и вызывая LookupPrivilegeValue, чтобы получить LUID (Локально уникальный идентификатор) привилегии отладки.
  3. Функция затем корректирует токенные привилегии с помощью функции AdjustTokenPrivileges. Если параметр Value равен True, она устанавливает атрибуты привилегии отладки в SE_PRIVILEGE_ENABLED (0x00000002). Если Value равно False, она устанавливает атрибуты в SE_PRIVILEGE_DISABLE (0x80000000).
  4. Функция затем проверяет, была ли коррекция успешной, вызывая функцию GetLastError. Если код ошибки равен ERROR_SUCCESS (0), это означает, что привилегия отладки была успешно включена или отключена.
  5. Наконец, функция закрывает handle к токену процесса с помощью функции CloseHandle.

Пример использования показывает, как включать и отключать привилегию отладки:

EnableDebugPrivilege(True);   // Включить привилегию отладки
// После этого вы можете просматривать информацию о системных модулях, таких как winlogon.exe и services.exe, и т.д.
EnableDebugPrivilege(False);   // Отключить привилегию отладки

Код полезен для целей отладки, поскольку позволяет текущему процессу доступ к ресурсам системы, которые обычно ограничены. Однако важно отметить, что включение привилегии отладки может потенциально компрометировать безопасность системы.

Автор оригинального кода - Jeffrey Richter, а адаптация была выполнена Дмитрием Мироводином в 2003 году. Copyright-нотация указывает, что оригинальный код датируется 2000 годом.

Функция EnableDebugPrivilege позволяет установить или снять отладочные привелегии у текущего процесса, что позволяет получить информацию о системных модулях и процессах.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Процессы и Сервисы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-07 05:46:09/0.005565881729126/1