Запретить завершение процесса

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
M.A.R.K
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 11.11.2007 (Вс) 11:50
Откуда: Иркутск

Запретить завершение процесса

Сообщение M.A.R.K » 06.06.2008 (Пт) 8:11

Всем привет.

Пишу программу, нужно сделать так, чтобы процесс нельзя было завершать...
Бывает, завершаешь какой-нибудь процесс в Win. Task Manager, а он не "стреляется"... (так же хочу)
Я пробовал добавлять в свой процесс, ACE с маской доступа PROCESS_ALL_ACCESS, исключающую PROCESS_TERMINATE.
Но результатов это не дало...

Подскажите, как это можно сделать (желательно без перехвата API)...

Заранее благодарен.
-Решил Хакер блины печь...
-Первый блин у него вышел, как обычно - Комом...
-А второй - Экзешником...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.06.2008 (Пт) 8:15

А тестировал из под пользователя или из под админа?
Lasciate ogni speranza, voi ch'entrate.

M.A.R.K
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 11.11.2007 (Вс) 11:50
Откуда: Иркутск

Сообщение M.A.R.K » 06.06.2008 (Пт) 8:23

alibek, конечно
-Решил Хакер блины печь...
-Первый блин у него вышел, как обычно - Комом...
-А второй - Экзешником...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.06.2008 (Пт) 8:33

Ну тогда да.
Lasciate ogni speranza, voi ch'entrate.

M.A.R.K
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 11.11.2007 (Вс) 11:50
Откуда: Иркутск

Сообщение M.A.R.K » 06.06.2008 (Пт) 9:29

alibek
Так способ с ACE не подходит?
-Решил Хакер блины печь...
-Первый блин у него вышел, как обычно - Комом...
-А второй - Экзешником...

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 06.06.2008 (Пт) 11:00

я думал такое только в анекдотах бывает :)

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 06.06.2008 (Пт) 18:57

1) Сотни раз уже обсуждалась эта изъеденная молью тема. )

:lol:

2) Отличный диалог ))

xxx: Тестил из под юзера или из под админа ?
yyy: Конечно !!!
xxx: Ааа... Ну тогда ДААА !!!

M.A.R.K
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 11.11.2007 (Вс) 11:50
Откуда: Иркутск

Сообщение M.A.R.K » 07.06.2008 (Сб) 7:12

Спрашиваю еще раз...
Данную задачу можно реализовать путем правки ACE и т.д. ?
-Решил Хакер блины печь...
-Первый блин у него вышел, как обычно - Комом...
-А второй - Экзешником...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 07.06.2008 (Сб) 9:02

ALX_2002
xxx: Тестил из под юзера или из под админа ?
yyy: Конечно !!!
xxx: Ааа... Ну тогда ДААА !!!

На башорг ушло?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 07.06.2008 (Сб) 16:09

Спрашиваю еще раз...
Данную задачу можно реализовать путем правки ACE и т.д. ?


По скольку однозначно ответить на этот вопрос сразу не могу, то дружно читаем

Инфа


Денис писал(а):ALX_2002
xxx: Тестил из под юзера или из под админа ?
yyy: Конечно !!!
xxx: Ааа... Ну тогда ДААА !!!

На башорг ушло?


Башорг уже переполнен )

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 07.06.2008 (Сб) 16:58

ALX_2002, ты не в теме.
Автору - может быть вечером(не известно правда каким) посмотрю. По идее должно быть можно(а почему нет?)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 10.06.2008 (Вт) 16:41

Вобщем, судя по тестам, администратор может завершить любой процесс, несмотря на его ACL
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

M.A.R.K
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 11.11.2007 (Вс) 11:50
Откуда: Иркутск

Сообщение M.A.R.K » 11.06.2008 (Ср) 3:46

ANDLL
Большое спасибо.
1. Выходит нужен перехват ZwTerminateProcess (Для админской учетки)
2. ACL подходит для пользовательских учеток? (Для гостевой учетки)
-Решил Хакер блины печь...
-Первый блин у него вышел, как обычно - Комом...
-А второй - Экзешником...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 11.06.2008 (Ср) 10:13

2. ACL подходит для пользовательских учеток? (Для гостевой учетки)
Гость кажеться вообще не может редактировать ACL своих процессов.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.06.2008 (Ср) 14:21

Подскажите, как это можно сделать (желательно без перехвата API)...
Без перехвата стопроцентный способ только один - разубедить систему в том, что это процесс. :)

Теперь на пальцах:

Есть в ядре такая табличка, называется PspCidTable. Она хранит в себе списки потоков и
процессов и именно по этой таблице ориентируются такие функции, как OpenProcess/Thread.
Организована она как HANDLE_TABLE (здесь описывать структуру не буду - читайте
ms-rem'a на васме).

Так вот: если пробежаться по этой табличке и удалить (а точнее занулить) все записи,
связанные с нашим процессом (т.е. потоки включительно), то процесс уже не убить ни как -
сама система не сможет этого сделать. Правда есть один недостаток - такой процесс уже не
сможет порождать другие потоки (а, следовательно, и процессы!). На счет окон не помню -
кажись все нормально.

Хотел было нарыть готовый код (писал драйверок на асме), но что-то на работе его нет.
Вечером дома посмотрю, если кому интересно.


Касаемо остальных методов сделать процесс неубиваемым:

1. Хуки.
В юзермоде от них толку нет. В ядре побольше, но тоже мало - можно подгрузить ядро с диска и
вызвать нехученную ZwTerminateProcess.

2. Deadlock.
При использовании хэндла именованого канала, работающего в блокируещем режиме, возникает
дидлок и поток на всегда замерает. Толку от этого метода нет, так как нет проку от неработающего потока.

3. IRP
Если послать драйверу IRP, но не вернуть его (бесконечный цикл в драйвере), то вызывающий поток (и, следовательно. процесс) тоже станет неубиваемым. От такого потока тож нет толку +
на одноядерной машине загрузка камня процессом System стремится к 100%.

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

5. Права.
Ну тут все понятно - если сидеть под администратором (как делает большинство) и получить SeDebugPrivilege, то можно убить даже критические системные процессы.

6. Подмена PID
Можно сменить PID своего процесса на 4 - тогда из юзермода его уже не убить. Зато некоторые проги начинают реально глючить - виндовый TaskMan, PETools и другие начинают находить много разных и интересных процессов в системе.

Так что не страдайте ерундой - если захотят прибить, все равно прибьют. Если нужно обезопасить какой-то код от преждевременного завершения - юзайте системные потоки, но это уже ядро...
Последний раз редактировалось Twister 11.06.2008 (Ср) 14:34, всего редактировалось 2 раз(а).
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.06.2008 (Ср) 14:25

4 сейчас делают по другому. Не только ждущий процесс может респаунить основной, но и основной может респаунить ждущий.
Вручную от такого дуэта избавиться сложно.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.06.2008 (Ср) 14:30

4 сейчас делают по другому. Не только ждущий процесс может респаунить основной, но и основной может респаунить ждущий.
Вручную от такого дуэта избавиться сложно.
Ну, во первых, не сечас, а давно - так еще InterBase, кажись, работал.

Не вижу ни чего сложного: Замораживаем первый. Убиваем второй. Убиваем первый. Все с помощью ProcessExplorer.
Последний раз редактировалось Twister 11.06.2008 (Ср) 14:35, всего редактировалось 1 раз.
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.06.2008 (Ср) 14:34

Замораживаем первый, и второй его размораживает.
Убиваем второй, и его респаунит первый.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.06.2008 (Ср) 14:41

Ну знач надо заморозить сразу два, причем попоточно. Опять же - в юзермоде сложно будет заморозить сразу все потоки в обоих приложениях, так что есть шанс "не успеть". А в ядре - без проблем. Чуть задираем IRQL, чтоб нас ни кто не прервал, и работаем себе на здоровье.

Вообщем, это получается борьба с ветряными мельницами - убить можно все. Тем более, я еще не описывал способы завершения процессов. А их довала: документированные, недокументированные и основаные на глюках самого приложения.
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.06.2008 (Ср) 14:57

Так это я и имел ввиду под "вручную сложно".
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 12.06.2008 (Чт) 9:43

Вот те сорцы, о которых я говорил, если кому надо...
А я все практикую лечение травами...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 80

    TopList