8 мар. 2014 г.

Не убиваемое приложение на OS X

Небольшая, невинная шалость, которую Вы можете сделать своему другу на его Маке. Инструменты которые нам понадобятся:

- Текстовый редактор;
- Терминал.

Предполагаю что у Вас уже есть некоторые знания по запуску приложений из терминала (launchd) и использованию launchctl инструмента. Все что нужно для не убиваемого приложения (будь то какое-нибудь фоновое приложение) это определить его в качестве сервиса / процесса ( службы) и запустить (получится что если вы его убьете (kill), то система автоматически его снова запустит). launchd используется для администрирования службы на OS X. У него есть инструмент launchctl который запускает / останавливает сервис / процессы (службу). Также - каждая служба определяется с помощью plist - файла. Давайте создадим такой файл:

<plist version="1.0">
 <dict>
    <key>Label</key>
    <string>com.apple.SafariService</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Applications/Safari.app/Contents/MacOS/Safari</string>
    </array>
    <key>OnDemand</key>
  <false/>
 </dict>
</plist>

Дальше все просто. Мы его обзываем как com.apple.SafariService и делаем его как исполняемое  (даем права на выполнение/запуск) дополнение Safari. Опция OnDemand говорит, что он должен всегда работать. Сохраняем XML как файл с именем com.apple.SafariServicе.plist и помещаем его в папку ~/Library/LaunchAgents. Теперь для "не убиваемой части" - откройте терминал и введите следующую команду:

$ launchctl load ~/Library/LaunchAgents/com.apple.SafariService.plist

Это запустит Safari, если он не работает. Также - это будет перезапускать Safari как только вы попытаетесь выйти из него. То же самое касается kill - как только вы отправите службе сообщение SIGTERM - ОС будет перезапускать приложение. Вот и все. Удачного издевательства!

0 коментарі:

Отправить комментарий