| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Как не дать завершить свой процесс? |
| Автор: nod3264 9.2.2010, 21:10 |
| В прошлой теме я хотел спрятать процесс, но сделать это удалось только для xp. Но у нас на работе стоят компы с Windows 7. Поэтому хочу сделать не убиваемый процесс(хотя бы из диспетчера задач). Сейчас приложение работает как сервис, но его процесс спокойно убивается, не смотря на то, что в диспетчере он помечен как системный. Подскажите что сделать чтобы работники не могли убить процесс диспетчером? |
| Автор: bems 9.2.2010, 21:18 |
| Работники же под ограниченными юзерами у вас? |
| Автор: kami 9.2.2010, 21:19 | ||
Не давать пользователям права администратора. |
| Автор: nod3264 9.2.2010, 21:24 |
| У них нормальные права, не ограниченные. Не давать права не получается. Они нужным им. |
| Автор: Данкинг 9.2.2010, 22:04 |
| Отключи диспетчер задач. |
| Автор: nod3264 9.2.2010, 22:18 |
| Кроме диспетчера инет завален всякими прогами для мониторинга процессов |
| Автор: bartram 9.2.2010, 22:49 |
| nod3264, у вас в конторе Домен используется? |
| Автор: nod3264 10.2.2010, 00:09 |
| Что за Домен? |
| Автор: bartram 10.2.2010, 13:26 |
http://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BC%D0%B5%D0%BD_Windows_NT |
| Автор: nod3264 10.2.2010, 14:39 |
| нет |
| Автор: Riply 14.2.2010, 02:01 | ||
Не искаверков систему - imho, никак. Можно попробовать сделать так, чтобы процесса (или подгружаемой DLL-ки) не было в принципе (например, код "размазан" по разным нитям разных процессов). Тогда и уничтожать будет нечего Правда останется слабое место - активизация. |
| Автор: morpheyushka 15.2.2010, 16:01 |
| Может сделать так, что бы процесс оповещал сервер, что мол я такой-то, с таким ip адресом работаю. А потом смотреть, кто из умников его валит. У нас есть похожий механизм, который работает для синхронизации времени. Также можно попробовать сделать, что бы он перезапускался и оповещал сервер, что "меня тут один нехороший человек попытался завалить". Ну а сотрудникам объяснить, что это должно работать постоянно! |
| Автор: yeputons 29.4.2010, 17:01 |
| можно сделать системный сервис с галочкой "перезапускать при падении". Но не уверен, что будет работать не при ошибках, а при TerminateProcess |
| Автор: RinOSpro 22.6.2010, 12:25 |
| Ой и не люблю я троянописатеям помогать Самый простой способ и не коверкая систему это два процесса которые мониторят друг друга, конечно не абсолютная защита но даже от продвинутого пользователя защитит. Еще где то у меня завалялся пример там драйвер прячет процесс, да так что даже ProcessExplorer-ом не видно. |
| Автор: kami 22.6.2010, 12:39 | ||
На wasmе MS-Rem писал. Далеко не везде работает, роняя систему в BSOD. В исходники не лазил - не соображаю в них :( |
| Автор: blackjack74 23.8.2010, 00:17 |
| как вариант могу посоветовать внедрить код в какой нибудь системный процесс, который (код) будет перезапускать вашу программу. |
| Автор: drkot 24.8.2010, 01:09 |
| однако какия писссссча для антивирусных лаборатория... единственное онрмальное решение (разумеется имхо) это перехват TerminateProcess на уровне драйвера именно это и делают антивири и прочие притворяющиеся хорошими и делают это только с целью того, чтоб хитрый вирь не грохнул втихаря монитор касперыча пока тот пребывает в нирване. все остальное это попытка карточные фокусы выдать за черную магию... а вобже если все легально, то юзверь который убил процесс должен пожертвовать часть зп в пользу фирмы и развития ИТ отдела. и гарантировано ни один из них туда не полезет. а вот если это не легально.... то это выходит за рамки данного форума... для таких умных есть "завершить дерево прооцессов" ага, и все антивири будут просто в восторге поймав этот злобный вирус |
| Автор: bartram 24.8.2010, 14:15 |
| drkot, я не думаю, что тут вопрос о реакции антивирусов. Тут скорее вопрос реализации. Просто нужно решение. Поиск по форуму легко эту задачу решает. |
| Автор: RinOSpro 25.8.2010, 15:40 | ||
Если запускать через смежный процесс, а потом смежный процесс убивать то Parent PID будет невалидный, и "завершить дерево процессов" не поможет.
Когда то проверял на virustotal.com не палился. |
| Автор: Markus13 28.8.2010, 02:41 | ||||
У меня, к примеру есть самописный менеджер процессов - в нем можно сразу несколько процессов завершать, не думаю что я один додумался добавить такую функцию... Кроме того у меня есть маленькая утилитка которая вообще из текстового файла берет имена процесов для "убивания".
Я тоже так думаю... |
| Автор: bartram 28.8.2010, 13:36 | ||
Даже простая реализация перехвата на User Mode уровне от большинства неспециализированных прог поможет |
| Автор: RinOSpro 30.8.2010, 09:06 | ||
Тебе не нужна маленькая самописная прога, достаточно таких которые уже написаны. К примеру плагин в тотал командере. Но зато диспетчер задач так не может, ведь автор просил простое решение! |
| Автор: v1m 2.9.2010, 19:19 |
| запускать две проги в каждой смотреть запущена ли другая если нет то опять ее запускать xD знаю что бред но может поможет... |
| Автор: okkonst 6.9.2010, 13:03 |
| Я вижу несколько путей решения. 1. Вспомнить, что права юзера - штука настраиваемая, можно сделать юзера, которому можно почти все, что и админу. 2. Заинтересовать юзера в этом процессе. То есть: 2.1 Сделать работу в системе неудобной или невозможной без этого процесса. Один из вариантов реализации - патч важного пользовательского инструмента. Или замена какого-нибудь драйвера или сервиса самодельным, имеющим дополнительную функциональность. В простейшем варианте (от дураков) подойдет банальная подмена доверенного исполняемого файла своим, который будет запускать переименованный старый. 2.2 Сделать убиение процесса платным (как уже предлагалось) или анально чувствительным 3. Городить систему сторожей, сторожащих друг друга, в том числе - с нестандартной активацией (вроде запуска вместо winword). Если честно, за пункты 2.1 или 3 - убил бы, буде кто такое на моей машине нагородит. Единственный легальный вариант (который я вижу), при котором эти пункты имеют смысл относительно 2.2 и 3 - комп используется студентами. Но даже в этом случае лучше настроить анальный каратель, т.к. отследить того, кто прибил процесс, в большинстве случаев, труда не составит. Предлагаю автору треда озвучить свои цели - что за процесс и почему его надо так сохранять и почему нельзя просто сказать юзеру "это не трожь", вполне вероятно, что они уже имеют готовое решение (либо нелегальны). |
| Автор: Beltar 16.10.2010, 15:34 |
| Если бы это было возможно, то можно было бы создать вирус, который нельзя будет убить, поэтому любая ОС всегда будет иметь возможность прикончить любого, кто не захочет закрыться по-хорошему. Если сделать невидимое в диспетчере задач, то опять же есть утилиты, которые видят и таких партизан. В общем задача лишена смысла и должна решаться в административном порядке. |
| Автор: RinOSpro 28.10.2010, 13:41 |
| Недавно написал реально не убиваемую программу В чем был прикол, прога работала с драйвером и когда она его освобождала происходило следующее: IRP_MJ_CLEANUP, IRP_MJ_CLOSE. Так вот был глюк что на запрос IRP_MJ_CLOSE драйвер ни чего не отвечал и прога наглухо висла. Завершить ее не могла ни одна из известных мне утилит)) Одно плохо... она тоже висит |