Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
1

Как завершить неубиваемый процесс?

24.06.2017, 13:23. Показов 2277. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нашёл в инете код, который делает процесс неубиваемым:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function ZwSetInformationProcess(cs1:THandle; cs2:ULONG; cs3:Pointer; cs4:ULONG):ULONG; stdcall; external 'ntdll.dll';
 
function Non_Killable(Process: String; BSOD: Bool): ULONG;
var
  Val           : ULONG;
  ProcessEntry  : TProcessEntry32;
  hSnapshot     : THandle;
  ProcessHandle : THandle;
  ProcessID     : DWORD;
begin
  case BSOD of
    True  : Val := $FFFFFFFF;
    False : Val := $8000F129;
  end;
  hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  ProcessEntry.dwSize := SizeOf(ProcessEntry32);
  while Process32Next(hSnapshot, ProcessEntry) do
  begin
    if Process = ProcessEntry.szExeFile then
    begin
      ProcessID := ProcessEntry.th32ProcessID;
      ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, True, ProcessID);
      CloseHandle(hSnapshot);
    end;
  end;
  Result := ZwSetInformationProcess(ProcessHandle, $21, @Val, SizeOf(Val));
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 non_killable('Project1.exe', False); //Sin BSOD
 
non_killable('Project1.exe', True); //Con BSOD
end;
Код оказался рабочим, только я теперь хз как убить этот процесс... Не подскажите код для завершения такого процесса?

Добавлено через 30 минут
И да, если можно - объяснить, что делает этот код...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2017, 13:23
Ответы с готовыми решениями:

Скрытие процесса в диспетчере задач или неубиваемый процесс Windows 10
Помогите сделать скрытие процесса в диспетчере задач Windows 10

Неубиваемый процесс
Привет:) "Работаю" над созданием клиент-серверного приложения. Установила клиент на клиентской...

Неубиваемый процесс
Ребята помогите пожалуйста как сделать Неубиваемый процесс (системный) можете скинуть исходник :(

Как отключить, а не завершить сеанс?
я знаю как программно выключить комп, перезагрузить. Но не могу найти как отключить, а не завершить...

8
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
24.06.2017, 14:15 2
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
Не подскажите код для завершения такого процесса?
пробуйте (функция 2).

Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
что делает этот код
Ваш
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
делает процесс неубиваемым


Не по теме:

Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
Нашёл в инете код
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
оказался рабочим
А Вы не экспериментируйте с тем, чего не знаете. Иначе, однажды, сильно удивитесь и Вас посетит Wanna Cry :)

0
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
24.06.2017, 16:58  [ТС] 3
Цитата Сообщение от droider Посмотреть сообщение
А Вы не экспериментируйте с тем, чего не знаете
Я в общем понимаю, что делает этот код, просто я не совсем понимаю, что именно надо изменить, что бы сделать процесс снова убиваемым.
Я не очень-то понимаю что конкретно делает эта ф-ция:
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, True, ProcessID);
И вот эта: (Я понимаю, что она что-то изменяет в процессе, но что конкретно - хз...)
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
ZwSetInformationProcess(ProcessHandle, $21, @Val, SizeOf(Val));
Добавлено через 8 минут
Цитата Сообщение от droider Посмотреть сообщение
пробуйте (функция 2).
И это не помогает Он просто висит в диспетчере задач и всё

Добавлено через 10 минут
И если можно, то мне нужен код не убивания данного процесса, а что-бы он снова стал убиваемым.

Добавлено через 53 минуты
И главная проблема в том, что после завершения процесса даче через application.terminate процесс остаётся в диспетчере задач!
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
24.06.2017, 17:19 4

Не по теме:

Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
Я в общем понимаю, что делает этот код
:))))))

Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
даче через application.terminate процесс остаётся в диспетчере задач!
:))))))



напишите комментарии к каждой строке функции, переведите все описание в MSDN и только тогда поймете
0
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
24.06.2017, 18:12  [ТС] 5
Не могли бы вы ускорить этот процесс и объяснить, что я должен понять сделав это:
Цитата Сообщение от qwertehok Посмотреть сообщение
напишите комментарии к каждой строке функции, переведите все описание в MSDN
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
24.06.2017, 18:49 6
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
Я не очень-то понимаю что конкретно делает эта ф-ция:
Delphi
1
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, True, ProcessID);
функция OpenProcess()

Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
И вот эта: (Я понимаю, что она что-то изменяет в процессе, но что конкретно - хз...)
Delphi
1
ZwSetInformationProcess(ProcessHandle, $21, @Val, SizeOf(Val));
А здесь функция ZwSetInformationProcess рекурсивно вызывает саму себя.

Добавлено через 5 минут
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
Не могли бы вы ускорить этот процесс и объяснить, что я должен понять
Копируйте имя непонятной Вам функции или процедуры в поисковик и смотрите ее описание. Я привел выше пример с OpenProcess(). Для Вас удобно будет именно на русском.
0
225 / 80 / 35
Регистрация: 01.04.2017
Сообщений: 182
24.06.2017, 19:35 7
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
Я в общем понимаю, что делает этот код
ORLY?
Вы запустили НЕДОКУМЕНТИРОВАННУЮ функцию из библиотеки ядра с НЕДОКУМЕНТИРОВАННЫМИ параметрами.
Иными словами запустили багу ядра. Подробнее здесь

Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
И если можно, то мне нужен код не убивания данного процесса, а что-бы он снова стал убиваемым.
Вам нужен не код что-бы он снова стал убиваемым, а поставить все сервис паки и обновления. Или как вариант апнуть версию системы.
А вот юзать багу в надежде что ее не прикроют - наивно, учитывая что есть другие, документированные способы 'неубиваемости'.

Добавлено через 2 минуты
Попробуйте прибить Process Hacker'ом. Вдруг поможет.
0
4 / 4 / 1
Регистрация: 23.01.2015
Сообщений: 330
24.06.2017, 20:54  [ТС] 8
Цитата Сообщение от Animalia Посмотреть сообщение
учитывая что есть другие, документированные способы 'неубиваемости'.
Не подскажите, какие именно? Один из этих способов я нашёл в инете, (основано на : SetKernelObjectSecurity ) но он работает только для обычного пользователя, админ же может легко завершить данный процесс.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 function ProtectObject(Handle : THandle) : Boolean;
var SD : TSecurityDescriptor;
ACL : array[0..1023] of Byte;
begin
  Result := False;
  if not InitializeSecurityDescriptor(@SD, SECURITY_DESCRIPTOR_REVISION) then
  begin
    Exit;
  end;
  FillChar(ACL, SizeOf(ACL), 0);
  if not InitializeAcl(_ACL((@ACL)^), SizeOf(ACL), 2) then
  begin
    Exit;
  end;
  if not SetSecurityDescriptorDacl(@SD, True, @ACL, False) then
  begin
    Exit;
  end;
  if not SetKernelObjectSecurity(Handle, DACL_SECURITY_INFORMATION, @SD) then
  begin
    Exit;
  end;
  Result := True;
end;
{
procedure securityprocess;
begin
  ProtectObject(GetCurrentProcess); ProtectObject(GetCurrentThread)
end;
}
Если есть другие методы защиты процесса без использования драйверов, то я буду очень рад их увидеть!
Цитата Сообщение от Animalia Посмотреть сообщение
Вы запустили НЕДОКУМЕНТИРОВАННУЮ функцию из библиотеки ядра с НЕДОКУМЕНТИРОВАННЫМИ параметрами.
Я по-вашему похож на экстрасенса или большого знатока в этой области? Я просто нашёл этот код в инете и решил протестить. Как оказалось это рабочий код и откуда блин я мог знать, что эта какая-то бага ядра и на последующих версиях винды работать не будет?
Цитата Сообщение от Animalia Посмотреть сообщение
Попробуйте прибить Process Hacker'ом. Вдруг поможет.
От этого даже он не помог -_- ...
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
24.06.2017, 21:46 9
Цитата Сообщение от Zagadohnik37 Посмотреть сообщение
Я по-вашему похож на .... большого знатока в этой области? Я просто нашёл этот код в инете и решил протестить
Поэтому
Цитата Сообщение от droider Посмотреть сообщение
не экспериментируйте с тем, чего не знаете

Попробуйте Process Explorer-ом завершить. Он позволяет завершить "дерево" зависимых процессов (Shift+Delete).
0
24.06.2017, 21:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2017, 21:46
Помогаю со студенческими работами здесь

Как завершить выполнение кода (не Exit)?
Ребята помогите с кодом, ниже приведена функция, которая должна проверять значение Edit и в случае...

Как завершить Excel.Application из Delphi?
Доброго времени суток! Эта тема уже много раз обсуждалась, но я не нашла ничего полезного для...

Неубиваемый процесс
Приветстсвую. Необходимо защитить свой процесс от "убийства" Для тех, кто будет спрашивать зачем:...

Породить неубиваемый процесс
Добрый день всем! Написал программу (Локер для компьютера ребенка) Суть работы. Через ТимВьювер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru