Как редактировать plist файл ios в играх

Обновлено: 05.07.2024

Проверь это - Как сделать синхронизированный снимок экрана из Терминала в macOS

Вы можете скачать последнюю стабильную версию Xcode из Mac App Store . Для загрузки приложения вам не нужна учетная запись разработчика. Ваш Apple ID отлично справится со своей задачей. Установите Xcode и запустите его хотя бы один раз, чтобы убедиться, что он настроен правильно, а затем вы можете использовать его для редактирования файла Plist.

Редактировать файл Plist

Перейдите в папку с файлом Plist. Эти файлы скрыты внутри пакета приложения, поэтому вам нужно перейти туда, где находится само приложение. Скорее всего, это папка «Приложения», но приложения могут запускаться и из других папок. Щелкните приложение правой кнопкой мыши и выберите в контекстном меню параметр «Показать содержимое пакета».

Проверь это - Как набрать N с тильдой наверху (Ñ ñ): Полное руководство

В открывшейся папке вы увидите папку «Содержание». Откройте его и внутри должен быть хотя бы один файл Plist с именем info.plist.


Щелкните его правой кнопкой мыши и выберите «Открыть с помощью»> «Xcode».


Файл откроется в Xcode, и вы сможете редактировать уже существующие строки настроек. Чтобы добавить новую настройку, щелкните строку правой кнопкой мыши и выберите параметр «Добавить строку» или параметр «Тип значения». Вы также можете удалить настройку, вырезав ее, и добавить, вставив ее. Вам решать, какие изменения вы можете внести в файл Plist и где их сделать. Содержимое этих файлов разное для каждого приложения, поэтому нет четкого руководства о том, что можно и нельзя добавлять. Когда закончите, сохраните изменения.

Проверь это - Как играть в Classic Minesweeper на macOS


Если вам лень копаться в магазине Cydia, и искать нужные твики, то всегда есть вероятность того, что можно решить вашу проблему простым изменением файлов настроек iPhone.

О маленьких твиках iOS, которые может сделать самостоятельно каждый пользователей Jailbreak тут и пойдёт речь. Все нижеописанное проверено на iOS 5.

1.Включаем панорамную камеру в iPhone

Для этого нужно попасть в папку
var/mobile/Library/Preferences/
и открыть файл com.apple.mobileslideshow.plist.

Далее ищем запись:

Функция тестовая, её придется еще включить в обычных настройках камеры. Качество получаемой панорамы также не очень качественное, но если вам нужна панорама на iPhone без установки сторонних программ тогда этот твик для вас.

2.Включение спрятанной панели автокоррекции текста

Если Вы не можете найти файл по вышеупомянутому пути, попробуйте поискать в
Library/Preferences/.

3. Скринсейвер на iPad и iPhone

ключ hidden на ключ visible.

Теперь помещаем файл со скринсейвером Demo.mov в папку
var/mobile/

после ReSpring’а всё должно заработать.

4. Включаем поддержку многозадачности в Cydia

меняя ключ true на false. Перезагружаем устройство и вуаля, Cydia запоминает ваше последнее положение в меню.

5. Включение буфферизации для 720p роликов в штатном приложении YouTube

и перезагружаем iPhone, iPad.

6. Изменяем текст на экране блокировки

Несмотря на то что есть такая настройка в Springtomize, иногда не хочется ставить лишних твиков, так что заходим в iFile и открываем:

System/library/CoreServices/SpringBoard.app/English.lproj/SpringBoard.strings
и редактируем следующий ключ:

"AWAY_LOCK_LABEL" = "slide to unlock"

7. Выключение постоянной поддержки Wi-Fi соединения

Заходим в:
/System/Library/LaunchDaemons/
и переименовываем com.apple.apsd.plist в com.apple.apsd.plist%, перезагружаем устройство.

Так же, все выше перечисленные действия может сделать каждый даже без использования Jailbreak. Для этого надо просто создать резервную копию iPhone, iPad, потом можно изменять ее программой iBackupBot, после чего необходимо восстановить ваш iOS девайс отредактированным бекапом.

И это ещё не всё, лист будет обновляться, по нахождению новых твиков. Отписывайтесь и задавайте вопросы ниже, ответим.

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

Как разблокировать файл .plist, чтобы я мог его изменить?

Я хочу отредактировать Info.plist для TextEdit. ( Вот почему. ) Я запускаю OS 10.7, и у меня есть Xcode. Но каждый раз, когда я пытаюсь отредактировать файл, он заблокирован, и я не могу сохранить изменения.

Если я попытаюсь сохранить его с помощью Xcode, Xcode спросит, хочу ли я его разблокировать. Я говорю «Разблокировать», но затем ошибка говорит The file "Info.plist" could not be unlocked." ; он говорит, что это потому, что я do not own it .

Как я могу внести изменения в файл Info.plist TextEdit?

4 ответа

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

Использование Finder

Выберите файл plist в Finder и сделайте File> Получить данные. В нижней части окна информации о файле вы увидите раздел под названием Sharing & Права доступа . Вы хотите, чтобы убедиться, что вы находитесь в этом списке, и что у вас есть доступ к файлу уровня Read & Write .

Диалоговое окно информации искателя

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

Как только вы разблокируете файл, вы можете изменить свои права на Read & Write . Если вы не указаны в списке людей, которые могут получить доступ к файлу, нажмите кнопку + под списком и найдите себя в Users & Groups , который появляется.

Изменения применяются к файлу, как только вы делаете их в окне сведений о файле.

Теперь вы сможете открывать, редактировать и сохранять эти изменения в файле.

Использование командной строки

Откройте окно терминала.

Измените место, где находится файл plist:

Измените права собственности и разрешения на файл, чтобы вы могли читать и писать:

Вам, вероятно, не нужен sudo при втором вызове, но он не может повредить. Для этого вам понадобится доступ администратора к машине.

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

А именно эти программы: defaults и PlistBuddy (запускается как sudo /usr/libexec/PlistBuddy ). Хотя defaults является более прямым способом изменения файла, PlistBuddy имеет интерактивный режим, который позволяет предварительно просмотреть ваши изменения перед сохранением.

При необходимости вы также можете использовать plutil для преобразования между различными форматами.

Помните, что вы можете получить помощь обо всех этих командах в командной строке, набрав man <command> (например, man defaults )

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

Меняем параметры игр на примере Fieldrunners

Лет 7 назад я баловался программой Art Money для взлома параметров для игр. Можно было, например, увеличить количество денег героя за пару минут.

Давайте посмотрим на примере Fieldrunners.

Что можно изменить в игре, чтобы без проблем проходить сотни уровней? Первое что пришло в голову — это параметры стрельбы. Увеличить мощность пушек оказалось довольно просто.

Воспользовался я программой iFile.

меняем параметры игр на примере Fieldrunners

Видим параметры для первого уровня оружия:

MinDamage=43 // минимальный урок
MaxDamage=43 //максимальный урон
AttackRadius=72.0 // радиус атаки

Увеличиваем эти параметры в 100, 100 и 10 раз соответственно. «Изменить», а после изменения «Сохранить»

меняем параметры игр на примере Fieldrunners

Теперь заходим в игру Fieldrunners и самое слабое орудие теперь вам позволит пройти сотни уровней без проблем.

меняем параметры игр на примере Fieldrunners

Вы хорошо поработали, и вот ваше приложение в App Store!

  • Храните учётные записи юзеров?
  • Используете встроенные покупки?
  • Не хотите показывать своё ноу-хау?

Disclaimer

Цель данного урока — не сделать вас хакером, а показать, как злоумышленники могут обвести вас вокруг пальца. В статье пропущена кое-какая инфа, необходимая для взлома реального приложения на девайсе. Будем мучить симулятор (кстати, это вроде бы даже законно [citation needed] ).

Disclaimer от переводчика: из оригинального текста убрано много «воды» и отсылок к Голливуду (и так длинно). Добавлен ряд ключевых пояснений.

Ни одно приложение не является безопасным! Если кто-то действительно захочет найти у вас уязвимости, то он их найдёт. Нет гарантированного способа предотвратить атаку. Разве что, не выпускать приложение. Но есть отличные способы помешать взломщикам. (По мнению автора, им надоест, и они пойдут спать искать более лёгкую добычу, ага. — Прим. пер.)

Перед тем, как читать дальше, вы должны примерно понимать, что такое терминал, а также Objective C и Cocoa (впрочем, особо много кода не будет).

Приступим

Чтобы вы творчески подошли к процессу, предлагаю вам сценарий. Представьте: вышло новое приложение для айпада — «Собиратель мемов» (Meme Collector). Всем нравится. Но вам шепнули на ухо, что встроенные покупки вытянут из вас значительную сумму денег.


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

Из-за длины этого урока мы изначально допустили некоторые упрощения в тестовом проекте. Например, «покупка» игровой валюты представляет из себя не настоящий in-app purchase, а фэйковый запрос к StoreKit (всё происходит локально на девайсе).

Что к чему? «Карта» приложения (application mapping)

Взглянем на приложение с высоты птичьего полёта! Что оно делает, с точки зрения пользователя? Какова его основная структура?

Откройте проект Meme Collector в своей любимой IDE или в Xcode (не реклама).


Мы будем запускать приложение в конфигурации Release.
Xcode: Product > Scheme > Edit scheme… (⌘<) — слева выбрать Run…, справа вкладка Info > Build Configuration: Release.
AppCode: Run > Edit configurations… > Configuration: Release.


Запустите приложение на симуляторе iPad (⌘R). А теперь забудьте, что у вас есть исходники, вы — юзер. Откроется одно из двух:

Это хабраэффект или проблема с соединением. Мемы берутся с API memegenerator.net — проверьте, что этот урл выдаёт <"success":true,"result":[список мемов]>. Во время перевода статьи у них были проблемы с сервером. Если есть желание избавить проект от зависимости от данного API, велкам на гитхаб.

Этот странный интерфейс позволяет «купить» мем по тапу на него, а также показывает число покупок данного мема и остаток денег на вашем счёте. От переводчика: нажав кнопку «Purchase Currency», я реально задумался: а не вводил ли я Apple ID на симуляторе?


…но вспомнил, что у меня к US-аккаунту не привязана кредитка. :) Русский бы сказал цену в рублях.

В общем, всё просто. Есть «игровая валюта», и вы (типа взломщик) не хотите отдавать за неё реальные деньги. Наша цель — получить больше мемов, не нажимая кнопку «Purchase Currency».

Мы примерно поняли, что делает приложение, давайте заглянем глубже. Что ещё мы можем узнать?

Упомянутая утилита class-dump-z отобразит нам все объявления (declarations), которые она сможет достать из исполняемого файла. Скачайте последнюю версию утилиты (например, 0.2a), распакуйте архив. В терминале перейдите в папку class-dump-z_0.2a/mac_x86/ . Там есть исполняемый файл class-dump-z, установите его, например, скопировав в /usr/bin/ :


Перейдите в папку симулятора iOS: (вместо 7.0.3 — ваша версия)


Здесь лежат все приложения, которые вы запускали в симуляторе. Их там может быть много. Как найти Meme Collector?

Вариант 1. Если вы только что запускали Meme Collector, то он лежит в папке с самой новой датой модификации. Просто перейдите в неё:

  • Команда ls выдаёт содержимое папки. Флаг "-tr" сортирует по времени: самая новая папка будет последней в списке.
  • Весь этот список поступает на вход команды tail. Она берёт некоторый объём данных с конца. В данном случае — ровно одну строчку (флаг "-n 1" или просто "-1").
  • Далее команда cd переходит в эту самую новую папку.

Вариант 2. Взять и найти:

  • Meme Collector.app — главный бандл (main application bundle)
  • ещё что-то :)


Тут есть исполняемый файл, который так и называется: Meme Collector (без расширения). Посмотрим, на какие фреймворки (frameworks) и общие библиотеки (shared libraries) имеются в нём ссылки. Нам поможет стандартная утилита otool :


И вот что видим:


Мм, интересно, приложение использует фреймворк Store Kit — встроенные покупки? Ну-ка, идём дальше. Запускаем утилиту class-dump-z:


И откроем полученный файл в стандартном гуёвом редакторе:


Ого! Хотя нет, по сравнению с примером из оригинальной статьи (Xcode 4, iOS 6 SDK) появились неприятные моменты типа XXUnknownSuperclass , но всё же! Мы видим не только интерфейсную часть, но и объявления закрытых (private) методов, свойств, протоколов.

Изучение дампа классов серьёзного проекта — чаще всего утомительное занятие. Но оно может дать потрясающую картину внутреннего устройства приложения!

Итак, мой юный следопыт! Найдите-ка мне все синглтоны в приложении.

В сигнлтонах часто встречаются объявления методов класса с ключевыми словами: manager, shared, store.

Если встретите интересный синглтон, изучите все его методы.
(Видимо, «интересный» = «похоже, имеющий отношение к логике приложения». — Прим. пер.)

Точно нашли? Посмотрите у себя внимательнее. Их там около четырёх штук.

Взломщики часто делают то, что вы сейчас сделали — ищут определённые слова в дампе класса. Например, если они хотят узнать, есть ли в приложении логика, завязанная на джейлбрейк девайса, то поиск по словам 'jailbroken', 'security' и т.д. может дать быстрый ответ.

Как это предотвратить?

Apple делает это за вас автоматически. Когда вы отправляете приложение в App Store, они шифруют ваши бинарники с использованием DRM-технологии под названием FairPlay. Если вы сдампите class-dump-z'ом зашифрованный бинарник, то получите… тарабарщину.

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


Plist-файлы: уязвимы!

Мы кое-что узнали о приложении. Теперь поищем всё, что плохо лежит. Разработчикам свойственно ошибаться. Злоумышленникам свойственно использовать эти ошибки в своих целях.

Ошибки… Начнём с самых глупых! Например, как вам идея: использовать файл .plist для хранения критической информации? Взломщики всегда смотрят plist'ы: их легко просмотреть, а их изучение может дать ключ к внутренней логике приложения. (Plist = property list, текстовый файл с сериализованными объектами).

Посмотрим, какие plist'ы у нас есть?
(напомню, мы всё ещё находимся в папке бандла «Meme Collector.app»)


А вот какие — две штуки:


Посмотрим первый — Info.plist:


Ничего интересного, какая-то общая информация. Ладно. Ну-ка, а второй:


Прикол! Этот .plist содержит ключ userCurrency с тем же значением, которое вы только что видели на экране симулятора. Значит ли это, что приложение хранит деньги в .plist'е? Есть только один способ узнать!


Измените значение userCurrency , например, на 1234. Сохраните и закройте файл .plist.

Вернёмся к симулятору. Уберём наше приложение из оперативной памяти (как говорят, «из многозадачности»).

Сочетание клавиш ⇧⌘H в симуляторе iOS соответствует нажатию кнопки Home. Нажмите это сочетание дважды, чтобы показать экран многозадачности, и смахните Meme Collector в никуда вверх.


Кажется, он не очень доволен, что его смахивают:

В дальнейшем, когда я буду говорить «перезапустите приложение», я буду иметь в виду именно эту операцию.

Снова запустите приложение. 1234 виртуальных тугриков в вашем распоряжении!
От переводчика: я ждал большей интриги. Не бывает так просто! Хоть свой тестовый проект пиши.

Пользовательские настройки: небезопасно!

Ну вы поняли? Хранить важную информацию в .plist — не самая лучшая идея. А теперь угадайте: что представляют из себя пользовательские настройки ( NSUserDefaults )? Ага, тоже plist! Физически он лежит по адресу /Library/Preferences/.plist .

Это как раз то место, где разработчики часто ошибочно чувствуют себя в безопасности. Не только фрилансеры: крупные корпорации время от времени попадают в эту ловушку. Бесчисленное множество приложений хранят важные данные в NSUserDefaults . Посмотрим, что нам здесь приготовил Meme Collector?

Из терминала (мы по-прежнему находимся в Meme Collector.app, так?) откройте файл:


Несложное упражнение для вас: используя методы, о которых говорилось выше, модифицируйте NSUserDefaults так, чтобы получить кучу мемов из серии «Y U No …» бесплатно. Даже если вы уже обо всём догадались, советую сделать это для закрепления.


Но ведь злоумышленники могут получить доступ к plist-файлам, даже когда iOS-девайс заблокирован — так где же безопасно хранить данные? Одно из решений — хранить данные в NSUserDefaults в зашифрованном виде. В этом случае (и не только. — Прим. К.О.) нужно проверять на валидность данные, читаемые оттуда.

Связка ключей: лучшие рецепты

Другое возможное решение — перенос важных данных из .plist'ов в Связку ключей iOS (Keychain). Как это сделать — написано, например, здесь.

Связка ключей «повышает ставки» для хакера. Злоумышленники не смогут ничего стянуть, если устройство заблокировано.

Тем не менее, не стоит полностью полагаться на одну только Связку ключей! И вот почему. Связку ключей поддерживает Apple. (Ну вы уже всё поняли, да?) Информация в ней зашифрована паролем пользователя, который обычно является простым 4-значным цифровым кодом. А это значит, что атака брутфорсом займёт минут двадцать. Узнав пароль, легко сдампить всю связку ключей.

Что же делать? Некоторые общие рекомендации:

    Шифруйте данные! Связка ключей вроде как безопасна, но это приоритетная цель для хакеров, поэтому её ломают в первую очередь. (Про джейлбрейкнутые устройства вообще нечего говорить — для них существуют утилиты, показывающие содержимое Связки ключей.) Усложните жизнь взломщикам хотя бы ненамного: шифруйте данные с помощью CommonCrypto API, который входит в состав стандартного Security Framework (пример).

Сеть: тестирование на проникновение

Ещё хакеры любят наблюдать, как приложение взаимодействует с сетью. Самый тупой способ увидеть, происходит ли какая-то работа с сетью на устройстве, это поискать URL'ы в бинарнике.

Находясь в папке бандла (Meme Collector.app), наберите в терминале:


Стой, куда столько! Команда strings идёт по разделам бинарника и выводит все элементы данных, похожие на строки. Отфильтруем шум:


А, ну вот, одна строка:


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

Charles, упомянутый в начале статьи — хороший вариант для такого исследования. Скачайте его, если ещё не сделали это. Установите и запустите.

Проверьте, что Charles ловит сетевое взаимодействие с симулятора iOS (путём запуска «Карт», или в Safari набрать урл). Вы увидите, как в Charles побегут сетевые запросы. Если этого не произошло, убедитесь, что в меню Proxy > Mac OS X Proxy галочка установлена.

Кстати, Charles отлично перехватывает SSL-трафик.


Выберите вкладку Response и затем внизу JSON. Ответ сервера, расшифрованный из JSON, представлен в виде красивой таблички:


Мы видим здесь множество строк вида «ключ-значение»: заголовок ( displayName ), описание ( description ), URL картинки ( imageUrl ) — в общем, некая информация по данному типу мемов «Four Bachelor Frog» из GET-параметра.


Похоже на то, что мы видели в приложении, правда? Двум другим картинкам в этот раз повезло меньше, они так и не дождались ответа от сервера (Charles сообщает об этом на вкладке Overview) и поэтому не отобразились в приложении.


А я вообще не вижу, чтобы запрашивались картинки!

При повторном запуске картинки могут браться из кэша симулятора, Charles лб этом не знает. Очистите кэш и перезапустите приложение.

Итак, с определённой долей вероятности делаем вывод: приложение берёт мемы с данного API и представляет их в виде платного контента. А что если попытаться изменить URL с целью приобрести какой-то новый контент, кроме этих трёх мемов? Непохоже, что тут есть проверка, действительно ли приложение получает с сервера то, что ожидал разработчик!

Вам уже надоели эти три мема? Ну-ка попробуем, можно ли отобразить и «купить» что-то новое, скажем, «Success Kid».

Выберите в меню Charles: Tools > Rewrite. Эта функция позволяет перехватывать входящие/исходящие запросы и модифицировать их по тем правилам, которые вы установите. Включите галочку Enable Rewrite. Правила группируются в «наборы» (Sets). Под списком Sets нажмите Add для добавления нового набора правил. По желанию, переименуйте (Name). Мы создали набор правил, но он пока пустой. Давайте добавим правило — в разделе Rules есть кнопка Add, нажмите её.


Открылось окно Rewrite Rule. Измените Type на «Modify Query Param» («Изменить параметр запроса») и заполните два поля:

Нажмите OK, OK. Перезапустите приложение… Success! Мы можем покупать контент, который ранее был недоступен.


Интересно: для этого нового мема указана конкретная цена. Откуда? Приложение должно было как-то определить стоимость, исходя из JSON-ответа.

Откройте вкладку Response и посмотрите на JSON, который возвращает сервер. Что может определить стоимость цены?

Попробуйте найти JSON-ключи, которые могут определить стоимость мема в приложении. Может быть, это generatorID, totalVotesScore, instancesCount, templatesCount или ranking. В качестве упражнения для вас: найдите тот ключ, который влияет на стоимость мема.


Теперь перезапустите приложение. Как только нам придёт ответ с сервера, сработает точка останова (breakpoint). Когда это произойдёт, щелкните на вкладке Edit Response, внизу выберите JSON:


Здесь вы можете вручную модифицировать JSON-ответ, который пойдёт в приложение. Поиграйтесь с этими параметрами и попробуйте определить, какие ключи влияют на цену, отображаемую в приложении. Изменив JSON-ответ, нажмите Execute (выполнить) для отправки ответа. Приложение делает три запроса к API, поэтому вам понадобится нажать Execute трижды.

Важно: действуйте быстро! AFNetworking имеет таймаут 30 секунд. Если вы перехватили ответ, но не успели внести изменения, AFNetworking вернёт ошибку таймаута запроса и выполнит соответствующий обработчик в коде (который в данном случае не делает ничего). Если у вас вышло время, перезапустите приложение и попробуйте снова.

Вы открыли в себе хакерские способности и выполнили простейшие тесты на проникновение на примере файловой системы и сетевого взаимодействия конкретного приложения. Вы победили простые plist'ы и даже можете модифицировать ответы сервера.

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

    Попробуйте такие средства, как iExplorer. iExplorer позволяет изучить содержимое файлов, которые используются вашими реальными приложениями. Посмотрите, что они там хранят.

Без джейлбрейка? Да ну?



Существует множество способов доступа к файлам PLIST. Наиболее быстрый из них — из программы Terminal с помощью команды default. Рассмотрим простой пример. Некоторые программы можно настроить таким образом, чтобы они отображали меню Debug (большинство пользователей, активно работающих с приложением iCal, знают, насколько полезным может быть это меню). Давайте рассмотрим, каким образом можно настроить iCal таким образом, чтобы добавить в строку меню команду Debug:

  1. При необходимости закройте приложение iCal.
  2. Запустите программу Terminal (Applications/Utilities/Terminal).
  3. Когда на экране появится приглашение к вводу (символ $), введите следующую команду: defaults write com.apple.iCal IncludeDebugMenu
  4. Перезапустите приложение iCal.

После появления окна приложения вы увидите, что в нем появилось новое меню Debug (рис. 1.15).

Рис. 1.15. В окне приложения iCal появилось меню Debug

Рис. 1.15. В окне приложения iCal появилось меню Debug

Приложение Terminal предоставляет великолепные возможности, когда вы знаете, что именно следует поменять. Однако если вы этого не знаете и лишь стремитесь узнать, какие настройки следует изменить, оно уже не будет столь полезным. Для этой цели вам понадобится список свойств (property list). Как было упомянуто в начале этого раздела, обычно большинство файлов PLIST находятся в папке Library в вашем домашнем каталоге. Для файла PLIST, содержащего настройки iCal, путь будет выглядеть следующим образом:

/Library/Preferences/com.apple.ical.plist. Как только вы обнаружите нужный файл, откройте его редактором списков свойств (Property List Editor). Как было рассказано в этой статье, этот редактор входит в состав Xcode Tools и устанавливается в папке /Developer/Applications. Кроме того, вы можете просто выполнить двойной щелчок мышью на нужном файле, и он будет открыт для редактирования (рис. 1.16).

Рис. 1.16. Список свойств, открытый для редактирования, отображает полный набор доступных вам опций

Рис. 1.16. Список свойств, открытый для редактирования, отображает полный набор доступных вам опций

После того как файл будет открыт, вы сможете отредактировать любую из его строк. Большинство строк не имеют большого практического значения, но некоторые из них имеют явно выраженный смысл и позволяют редактировать функциональные возможности приложения. Например, изменение числового значения в строке delete todos after с 30 на 60 приведет к тому, что задачи, принятые к исполнению, будут храниться в течение 60 дней.

Итак, теперь вы вооружены командной строкой и программой, позволяющей редактировать файлы PLIST, экспериментируя с их настройками. Кроме того, файлы PLIST можно редактировать и обычным текстовым редактором. В версиях Mac OS X, более ранних, чем Tiger, файлы PLIST можно было непосредственно открывать текстовыми редакторами, но теперь эти файлы хранятся в двоичном формате. Чтобы открыть файл PLIST текстовым редактором, вам потребуется предварительно преобразовать его. Какой из методов преобразования файлов PLIST является наиболее простым? На помощь снова придет приложение Terminal.

Рис. 1.17. Файл PLIST, преобразованный в формат XML

Рис. 1.17. Файл PLIST, преобразованный в формат XML

Файл PLIST приложения iCal уже достаточно хорошо изучен, так что теперь попробуем модифицировать закладки браузера Safari. Полный путь к файлу PLIST с настройками Safari выглядит так:

/Library/Safari/Bookmarks.plist. Прежде всего, создадим его резервную копию (как и рекомендуется поступать в большинстве случаев). Для этого наведите на файл курсор мыши, щелкните правой кнопкой и из контекстного меню выберите команду Duplicate. Теперь выполните преобразование этого файла с помощью следующей командной строки: $ plutil -convert xml1

В данном случае команда plutil запускает процедуру преобразования списка свойств. Ключ -convert xml1 сообщает plutil о необходимости преобразовать файл PLIST в формат XML, а остальная часть командной сроки задает путь к преобразуемому файлу. После того как команда отработает, переместитесь в нужную папку в помощью Finder, наведите на нужный файл курсор мыши, щелкните правой кнопкой и выберите из контекстного меню команды Open With → Other, а затем выберите опцию Text Edit. Файл PLIST, преобразованный в формат XML, выглядит вполне удобочитаемым (рис. 1.17).

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

Читайте также: