Как сделать процесс, который трудно убить в Mac / Linux? - PullRequest
0 голосов
/ 01 мая 2009

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

Моя производительность снижается, когда я нахожусь в Интернете, поэтому я хочу написать программу для автоматического отключения моего соединения время от времени. Но, зная меня, я, вероятно, просто убью sudo -9, как только это станет раздражающим, и я хочу сделать это немного сложнее, чтобы я не делал это все время. Любые предложения для этого (или другие способы достичь того, что я пытаюсь сделать)? Я думаю о таких вещах, как присвоение имен тем же, что и другим процессам, поэтому мне нужно потратить некоторое время на выяснение того, что мне нужно убить, частое создание процесса с помощью задания cron и т. Д.

Ответы [ 5 ]

9 голосов
/ 01 мая 2009

Из файла Jargon , всегда хорошее чтение для любителей истории ИТ-индустрии и тех, кто хочет знать, о чем мы говорим:

=====

Еще в середине 1970-х годов несколько сотрудников службы поддержки в Motorola обнаружил относительно простой способ взломать систему безопасности на Система временного разделения Xerox CP-V. С помощью простой стратегии программирования, для пользовательской программы было возможно заставить систему запустить часть программы в «режиме мастера» (состояние супервизора), в которой защита памяти не применяется. Программа могла бы потом ткнуть большой значение в свой байт «уровня привилегий» (обычно защищенный от записи) и затем можно обойти все уровни безопасности в пределах система управления файлами, патч системного монитора и многочисленные другие интересные вещи. Короче говоря, дверь сарая была широко открыта.

Motorola вполне правильно сообщила об этой проблеме в XEROX через официальный «Уровень 1 SIDR» (отчет об ошибке с предполагаемой срочностью «должен быть исправлено вчера ». Поскольку текст каждого SIDR был введен в база данных, которую может просматривать довольно много людей, Motorola следовали утвержденной процедуре: они просто сообщили о проблеме как «SIDR безопасности», и приложил всю необходимую документацию, способы воспроизведения и т. д. отдельно.

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

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

Они покопались в списках операционных систем и разработали дьявольский набор патчей. Эти патчи были тогда включены в пару программ под названием Робин Гуд и Фриар Так. Робин Гуд и Фриар Так были созданы для «призрачных заданий» (демоны в терминологии Unix); они будут использовать существующую лазейку для подрыва безопасности системы, установите необходимые исправления, а затем следить за статусами друг друга, чтобы сохранить систему оператор (по сути, суперпользователь) прерывает их.

Итак ... однажды системный оператор на основном программном обеспечении CP-V Система развития в Эль Сегундо была удивлена ​​рядом необычных явления. К ним относятся следующие:

  • Ленточные накопители перематывали и демонтировали свои ленты в середине работа.
  • Дисковые накопители будут перемещаться вперед и назад так быстро, что они будут пытаться ходить по полу.
  • Устройство вывода карты-перфоратора иногда запускается само по себе и пробить (каждое отверстие пробито). Это обычно варенье в пунш.
  • Консоль будет печатать непристойные и оскорбительные сообщения от Робин Гуда монаху Таку или наоборот.
  • Устройство считывания карт Xerox имело два выходных накопителя; возможно поручено складывать в A, в B или в A, если только карта была нечитаемой, в этом случае плохая карта была помещена в Укладчик B. Один из патчей, установленных призраками, добавил несколько код драйвера кард-ридера ... после прочтения карты она будет переворачиваться к противоположному накопителю. В результате колоды карт разделятся сами пополам, когда они были прочитаны, оставляя оператора вспомните их вручную.

Были произведены и другие эффекты.

Естественно, оператор вызвал разработчиков операционной системы. Oни нашел работу призрака бандита и X'ed их ... и когда-то были снова удивлен. Когда Робин Гуд был X'ed, следующая последовательность События произошли:

!X id1 id1: Friar Tuck... I am under attack! Pray save me! id1: Off (aborted) id2: Fear not, friend Robin! I shall rout the Sheriff of Nottingham's men! id1: Thank you, my good fellow!

Каждое задание-призрак обнаружит тот факт, что другой был убит, и запустит новую копию недавно убитой программы в течение несколькихмиллисекунды. Единственный способ убить обоих призраков - убить их. одновременно (очень сложно) или намеренно вывести систему из строя.

Наконец, системные программисты сделали последнее ... только чтобы найти это бандиты снова появились, когда система перезагрузилась! Это оказалось что эти две программы исправили образ времени загрузки ( / vmunix, в терминах Unix) и добавили себя в список программы, которые должны были быть запущены во время загрузки ...

Призраки Робин Гуда и Монаха Тука были окончательно уничтожены, когда системный персонал перезагрузил систему с чистой загрузочной ленты и переустановил монитор. Вскоре после этого Xerox выпустила патч для этой проблемы.

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

=====

Итак, в результате вы получите несколько заданий (столько, сколько вам нужно), мониторинг друг друга и перезапуск при необходимости. Вам также нужно защищаться от вариантов оператора kill, которые могут уничтожить целое множество процессов за одно попадание.

3 голосов
/ 01 мая 2009

Получить виджет для отображения вашего банковского баланса (или нахмуренное лицо супруга, или голодное лицо вашего ребенка) на рабочем столе.

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

2 голосов
/ 01 мая 2009

сделать это как модуль ядра, который вы просто не можете kill это.

0 голосов
/ 01 мая 2009

Вы можете войти в свой crontab, который может убивать Firefox каждые десять минут. Нет процесса, чтобы убить, чтобы предотвратить это.

Что-то вроде:

#! / Usr / bin / perl -w строгий

my $ random_number = rand () * 10;

if (rand () * 10 == 1) { kill firefox-bin } * +1010 *

и в crontab: * / 10 * * * * * /home//maybe_kill_firefox.pl

0 голосов
/ 01 мая 2009

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

И сделайте их выше обычного приоритета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...