Критичный процесс. Учимся создавать и принудительно завершать критичные процессы в Windows - «Новости»
Китайские разработчики ИИ признают, что в ближайшие несколько лет им вряд ли удастся опередить США - «Новости сети»
Китайские разработчики ИИ признают, что в ближайшие несколько лет им вряд ли удастся опередить США - «Новости сети»
Google представила универсальный протокол UCP для организации покупок через чат-боты - «Новости сети»
Google представила универсальный протокол UCP для организации покупок через чат-боты - «Новости сети»
«Эта игра будет жить вечно»: фанатов The Witcher 3: Wild Hunt заворожила демонстрация амбициозного мода HD Reworked Project NextGen Edition 2026 - «Новости сети»
«Эта игра будет жить вечно»: фанатов The Witcher 3: Wild Hunt заворожила демонстрация амбициозного мода HD Reworked Project NextGen Edition 2026 - «Новости сети»
MSI выпустит сразу три версии сверхмощной GeForce RTX 5090 Lightning: X, Z и OCER — последняя в открытой продаже не появится - «Новости сети»
MSI выпустит сразу три версии сверхмощной GeForce RTX 5090 Lightning: X, Z и OCER — последняя в открытой продаже не появится - «Новости сети»
Власти Индии собираются требовать от производителей смартфонов раскрывать исходный программный код - «Новости сети»
Власти Индии собираются требовать от производителей смартфонов раскрывать исходный программный код - «Новости сети»
Larian ответила на вопросы игроков о Divinity и генеративном ИИ в разработке — новые подробности амбициозной RPG от создателей Baldur’s Gate 3 - «Новости сети»
Larian ответила на вопросы игроков о Divinity и генеративном ИИ в разработке — новые подробности амбициозной RPG от создателей Baldur’s Gate 3 - «Новости сети»
«Думал, быстрее умру, чем дождусь её»: спустя семь лет после «Мора» в Steam вышла Pathologic 3 - «Новости сети»
«Думал, быстрее умру, чем дождусь её»: спустя семь лет после «Мора» в Steam вышла Pathologic 3 - «Новости сети»
«Sea of Thieves, но в пустыне»: трейлер эвакуационного шутера Sand: Raiders of Sophie понравился игрокам - «Новости сети»
«Sea of Thieves, но в пустыне»: трейлер эвакуационного шутера Sand: Raiders of Sophie понравился игрокам - «Новости сети»
Учёные нашли способ превращения испорченного молока в материал для 3D-печати - «Новости сети»
Учёные нашли способ превращения испорченного молока в материал для 3D-печати - «Новости сети»
Adata и MSI показали «первые в мире» 4-ранговые модули памяти DDR5 CUDIMM на 128 Гбайт - «Новости сети»
Adata и MSI показали «первые в мире» 4-ранговые модули памяти DDR5 CUDIMM на 128 Гбайт - «Новости сети»
Новости мира Интернет » Новости » Критичный процесс. Учимся создавать и принудительно завершать критичные процессы в Windows - «Новости»

Содержание статьи

  • NtSetInformationProcess
  • Выводы
Часть процессов?операционной системы считаются «критичными» — если завершить один из них, Windows выпадет в синий экран смерти и перезагрузится. Этим активно пользуются вирусописатели: если сделать свой процесс критичным, то его нельзя будет завершить просто так. В этой статье я покажу, как создавать такие процессы и как прибивать их без падения системы.

Дело в том, что хорошо организовать защиту процесса от завершения, когда пользователь работает под учетной записью администратора, практически невозможно. Есть разные полумеры, но на полноценную защиту они?не тянут. Например, можно использовать драйверы режима ядра, но в 64-битных операционных системах не так просто преодолеть механизм Kernel Patch Protection. Остается прибегать к трюкам вроде того, который мы разберем.


Давай посмотрим, как создать критичный процесс в Windows, как проверить, что процесс является критичным, и как его?завершить без падения системы в BSOD. Строго говоря, создавать мы будем не процесс, а критичный поток. Ведь процесс в Windows — это что-то вроде контейнера для потоков, в которых и выполняется код.



Критичный процесс. Учимся создавать и принудительно завершать критичные процессы в Windows - «Новости»
WARNING

Весь код, который я привожу в статье, настоятельно рекомендую исполнять только в?виртуальной машине, потому что завершение критического процесса вызовет общесистемный сбой и падение системы в BSOD с кодом CRITICAL_PROCESS_DIED и возможной потерей данных. Все тесты я проводил в VirtualBox на Windows 10 LTSB x64 в качестве хоста.







Зачем используется флаг critical?

  • Чтобы отметить системные процессы и предотвратить потерю данных при их завершении

  • Для выбора приоритета исполнения процессов и указания невыгружаемой части ядра

  • Для написания стойких зловредов, которых не выгрузишь просто так

Загрузка ...

Есть несколько методов, которые помогут нам создать критичный?процесс. Все они основаны на манипуляции вызовами NTAPI (Native Windows API), самыми «низкоуровневыми», которые можно выполнить в режиме пользователя. Эти функции экспортируются ntoskrnl.exe. Через обертку ntdll.dll мы сможем получить их адреса и вызвать их.


RtlSetProcessIsCritical


Первая функция Native API, которая поможет нам пометить процесс как критичный, — это RtlSetProcessIsCritical. Ее прототип?выглядит так:


NTSYSAPI
NTSTATUS
STDAPIVCALLTYPE
RtlSetProcessIsCritical(
IN  BOOLEAN  NewValue,
OUT PBOOLEAN OldValue OPTIONAL,
IN  BOOLEAN  CheckFlag
);

Чтобы эта функция сработала, перед ее вызовом нужно будет получить привилегию SeDebugPrivilege. Это можно сделать через «обычные» функции WinAPI.


BOOL setPrivileges(LPCTSTR szPrivName)
{
TOKEN_PRIVILEGES tp = { 0 ;
HANDLE hToken = 0;
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
std::cout  "OpenProcessToken failedn";
if (!LookupPrivilegeValue(NULL, szPrivName, &tp.Privileges[0].Luid))
std::cout  "LookupPrivilegeValue failedn";
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL))
{
std::cout  "AdjustTokenPrivileges failedn";
CloseHandle(hToken);
return TRUE;

return FALSE;


Вызов функции для получения SE_DEBUG_NAME будет таким:


Источник новостиgoogle.com
Цитирование статьи, картинки - фото скриншот - Rambler News Service.
Иллюстрация к статье - Яндекс. Картинки.
Есть вопросы. Напишите нам.
Общие правила  поведения на сайте.

Содержание статьи NtSetInformationProcess Выводы Часть процессов?операционной системы считаются «критичными» — если завершить один из них, Windows выпадет в синий экран смерти и перезагрузится. Этим активно пользуются вирусописатели: если сделать свой процесс критичным, то его нельзя будет завершить просто так. В этой статье я покажу, как создавать такие процессы и как прибивать их без падения системы. Дело в том, что хорошо организовать защиту процесса от завершения, когда пользователь работает под учетной записью администратора, практически невозможно. Есть разные полумеры, но на полноценную защиту они?не тянут. Например, можно использовать драйверы режима ядра, но в 64-битных операционных системах не так просто преодолеть механизм Kernel Patch Protection. Остается прибегать к трюкам вроде того, который мы разберем. Давай посмотрим, как создать критичный процесс в Windows, как проверить, что процесс является критичным, и как его?завершить без падения системы в BSOD. Строго говоря, создавать мы будем не процесс, а критичный поток. Ведь процесс в Windows — это что-то вроде контейнера для потоков, в которых и выполняется код. WARNING Весь код, который я привожу в статье, настоятельно рекомендую исполнять только в?виртуальной машине, потому что завершение критического процесса вызовет общесистемный сбой и падение системы в BSOD с кодом CRITICAL_PROCESS_DIED и возможной потерей данных. Все тесты я проводил в VirtualBox на Windows 10 LTSB x64 в качестве хоста. Зачем используется флаг critical? Чтобы отметить системные процессы и предотвратить потерю данных при их завершении Для выбора приоритета исполнения процессов и указания невыгружаемой части ядра Для написания стойких зловредов, которых не выгрузишь просто так Загрузка . Есть несколько методов, которые помогут нам создать критичный?процесс. Все они основаны на манипуляции вызовами NTAPI (Native Windows API), самыми «низкоуровневыми», которые можно выполнить в режиме пользователя. Эти функции экспортируются ntoskrnl.exe. Через обертку ntdll.dll мы сможем получить их адреса и вызвать их. RtlSetProcessIsCritical Первая функция Native API, которая поможет нам пометить процесс как критичный, — это RtlSetProcessIsCritical. Ее прототип?выглядит так: Чтобы эта функция сработала, перед ее вызовом нужно будет получить привилегию SeDebugPrivilege. Это можно сделать через «обычные» функции WinAPI. Вызов функции для получения SE_DEBUG_NAME будет таким: Источник новости - google.com

запостил(а)
Mathews
Вернуться назад
0

Смотрите также

А что там на главной? )))



Комментарии )))