Предпосылка такова:
У меня есть приложение, в коде которого указано, что оно работает только в версиях OS X с 10.4 по 10.9.2. (Когда я пытаюсь установить его, он выдает сообщение «Эта версия ____ предназначена для Mac OS X 10.4–10.9.2».). Я обновился до 10.9.3, и разработчику просто нужно обновить приложение, чтобы исправить это ограничение в своем инструменте.
На самом деле я связываюсь с разработчиком, который говорит, что он «слишком занят», чтобы работать над приложением или выпускать обновление прямо сейчас.
Я понял, что приложение просто читает, /System/Library/CoreServices/SystemVersion.plist
чтобы определить версию ОС, и мне удалось обойти его ограничение установщика, временно отредактировав файл с помощью этого руководства. Но после возврата значений plist к 10.9.3 и перезагрузки системы, чтобы начать (надеюсь) использовать приложение, я увидел, что оно даже проверяет SystemVersion.plist
даже запуск — не только во время установки.
Я беспокоюсь, что если я останусь SystemVersion.plist
на 10.9.2 на неопределенный срок, это разрушит другие части системы, такие как обновления App Store и тому подобное.
Итак, моя идея сейчас состоит в том, чтобы попытаться найти какой-нибудь метод или инструмент, чтобы заблокировать возможность приложения даже читать полностью SystemVersion.plist
— думайте об этом как о версии Little Snitch с «файловой системой» , если хотите — просто какой-то способ создать пользовательский правила для конкретных процессов, которые запрещают доступ на чтение и/или запись к определенным файлам/папкам в системе.
Возможно, это просто приведет к тому, что приложение выдаст ошибку и вообще не запустится (я мог бы проверить это, временно переместив файл plist в корзину всего на 30 секунд при попытке установить/запустить его) - но в любом случае, я думаю это действительно полезная вещь для мощных целей безопасности — точно так же, как настраиваемая блокировка доступа к сети для приложений в Little Snitch .
Так есть ли какой-нибудь замечательный сторонний инструмент или даже родной инструмент OS X / Xcode, который может это сделать? Любое понимание того, что вообще должно произойти в любом случае, с точки зрения системы/программирования? Настройка с помощью «Общий доступ и хурма» для файла в Finder позволяет мне контролировать доступ пользователей , но не процесс.
Вы можете просто использовать встроенные функции песочницы Mac OS X.
Создайте собственный профиль, который ограничивает доступ к файлу SystemVersion.plist, используя следующий синтаксис:
(version 1)
(deny file* (literal "/System/Library/CoreServices/SystemVersion.plist"))
(allow default)
Сохраните это, например, как ~/myprofile.sb, а затем запустите свою программу следующим образом:
sandbox-exec -f ~/myprofile.sb "/Application/My Program.app/Contents/MacOS/My Program"
SystemVersion.plist
, как я подозревал, что может. Но, по крайней мере, теперь мы обрисовываем в общих чертах основную процедуру для этой действительно классной общей функции безопасности; это работало с другими приложениями просто отлично! Тем не менее, было бы неплохо опробовать вашу идею изолирования Системных настроек в песочнице. Но когда я попробовал это ( sandbox-exec -f ~/myprofile.sb "/Applications/System Preferences.app/Contents/MacOS/System Preferences"
), он также выдал ловушку Abort 6 - есть идеи?(allow default)
отлично работает! Что хорошо (я думаю) - парень, ты пока на высоте! Вы гуру!!! Я тоже многому учусь, спасибо. Итак, перейдем к идее с именованными каналами (и снова я должен сначала проверить это на установщике приложения .app) — какие несколько команд я должен выполнить, чтобы настроить это? Немного погуглил и нуждаюсь в руководстве, как это сделать :). Спасибо. Я пока продолжу гуглить, но чувствую себя немного в глубоком конце (это действительно продвинутый, неясный материал) и, конечно же, не хочу все испортить ... в любом случае будет хорошо задокументировать все это.Приложение Hands Off имеет эту функцию:
Мониторинг доступа к диску
Приложения, присутствующие на вашем компьютере, могут свободно считывать, хранить или удалять информацию на вашем компьютере без вашего ведома. Используя Hands Off!, вы можете отслеживать и контролировать доступ к диску со стороны всех приложений, чтобы они не могли получить конфиденциальную информацию, стереть ваши данные или сохранить файлы cookie.
И это включает в себя функцию сетевого брандмауэра Little Snitch.
https://www.macworld.com/article/3190149/little-flocker-reincarnates-at-f-secure-in-free-beta.html :
Little Flocker, инструмент, который ограничивает доступ приложений и системных процессов к файлам без разрешения. Он не смог сообщить подробности, но недавно F-Secure, ведущая компания по разработке и анализу безопасности, объявила о покупке Little Flocker, которая была переименована в Xfence.
MacOS Catalina теперь имеет аналогичную функцию:
Защита данных
macOS Catalina согласовывает с вами, прежде чем разрешить приложению доступ к вашим данным в папках «Документы», «Рабочий стол» и «Загрузки»; айклауд диск; папки сторонних поставщиков облачных хранилищ; съемные медиа; и внешние объемы. Кроме того, вас спросят, прежде чем приложение сможет выполнить регистрацию ключей или сделать фото- или видеозапись вашего экрана.
нджбут
пользователь46942
пользователь46942
Info.plist
так иInfo.plist
во вложенном файле .app внутри, нет такой строки. В любом случае, изначально он проверялся в файле установщика, в установщике код для проверки версии ОС оказался в самом скомпилированном исполняемом файле Mac.нджбут
пользователь46942