Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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


Твики iOS путем редактирования plist файлов

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

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

Что нам понадобится:

  • iPhone или iPad с открытой файловой системой (сделан Jailbreak)
  • Программа iFile (можно скачать в Cydia Store)
    Собственно, больше ничего, так как Plist редактор уже встроен в iFile.

    Изменения файлов Plist - взломы и улучшения, которые может сделать каждый пользователь Jailbreak.

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


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

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

    Code

    <key>DiskSpaceWasLow</key><false/>


    Дописываем после:

    Code

    <key>EnableFirebreak</key> <true/>

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

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


    Идём в ту же самую папку
    var/mobile/Library/Preferences/
    и открываем файл com.apple.keyboard.plist и добавляем данную строку:

    Code

    <key>KeyboardAutocorrectionLists</key><string>YES</string>


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

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


    В некоторых магазинах на iДевайсах стоит фирменный скринсейвер. Если вам не жаль батареи тогда есть специальная настройка для его установки.
    Идём в папку:
    /var/stash/Applications/DemoApp/
    и редактируем файл Info.plist.
    Изменяем в куске кода:

    Code

    <key>SBAppTags</key> <array>
    <string>hidden</string> </array>


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

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

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

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


    Все знают, что стоит только переключиться на другую программу, Cydia, скромно говоря, всё забывает. Есть решение и для этой проблемы. Для этого заходим в:
    /var/stash/Applications/Cydia.app/
    редактируем в файле Info.plist строки:

    Code

    <key>UIApplicationExitsOnSuspend</key>
    </true>


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

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


    Открываем следующий файл:
    /System/Library/CoreServices/SpringBoard.app/N81AP.plist
    Меняем

    Code

    <key>720p</key>  
    <True/>


    На

    Code

    <key>720p</key>
    <false/>


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

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


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

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

    "AWAY_LOCK_LABEL" = "slide to unlock"

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


    Иногда встречается следующий баг, что аккумулятор внезапно разряжется, хотя iPad или iPhone был во сне. Это происходит из-за того, что он не всегда показывает статус подключения к сети. Если вы столкнулись с такой проблемой, нужно сделать так, чтобы iPhone не держал постоянно сеть - есть такая настройка.

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

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

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

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

    К слову, следите за новостями app-s.ru через нашу группу Вконтакте или в Telegram. У нас чертовски интересная лента новостей.

  • Порядок вывода комментариев: По умолчаниюСначала новыеСначала старые

    Ломаем iOS-приложение. Часть 1 / Хабр

    Вы хорошо поработали, и вот ваше приложение в App Store!
    • Храните учётные записи юзеров?
    • Используете встроенные покупки?
    • Не хотите показывать своё ноу-хау?

    Повод задуматься о безопасности кода и данных! Мы будем искать уязвимости в тестовом приложении. В этой статье поговорим о безопасности данных, а в следующей — перейдём к коду.

    Disclaimer


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

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

    Итак


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

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

    Приступим


    Нам понадобится:
    1. Утилита class-dump-z;
    2. Прокси для отладки по сети, например, Charles (триал-версия отличается надоедливыми сообщениями и работает максимум 30 минут за 1 сеанс). В комментах к исходнику статьи советуют альтернативу Чарльзу — Burpsuite.

    Чтобы вы творчески подошли к процессу, предлагаю вам сценарий. Представьте: вышло новое приложение для айпада — «Собиратель мемов» (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/:

    sudo cp class-dump-z /usr/bin/ 

    Перейдите в папку симулятора iOS: (вместо 7.0.3 — ваша версия)
    cd ~/Library/Application\ Support/iPhone\ Simulator/7.0.3/Applications/ 

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

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

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

    Вариант 2. Взять и найти:
    find . -name "Meme Collector" 

    В моём случае папка называется 9A72F266-8851-4A25-84E4-9CF8EFF95CD4 — далее будем называть её просто «папкой приложения». В ней лежит:
    • Meme Collector.app — главный бандл (main application bundle)
    • ещё что-то :)

    Бандл — это папка (именно папка, да, с расширением .app), в которой есть один или несколько исполняемых файлов плюс ресурсы к ним (картинки, звуки, цифровая подпись, в общем, что угодно, даже другие бандлы… read more). Перейдём в папку основного бандла:
    cd Meme Collector.app 

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

    И вот что видим:
    Meme Collector: /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration (compatibility version 1.0.0, current version 615.0.0) /System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices (compatibility version 1.0.0, current version 51.0.0) /System/Library/Frameworks/Security.framework/Security (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/StoreKit.framework/StoreKit (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/QuartzCore.framework/QuartzCore (compatibility version 1.2.0, current version 1.8.0) /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 2903.23.0) /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1047.22.0) /System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 600.0.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0) /usr/lib/libSystem.dylib (compatibility version 1.0.0, current version 111.0.0) 

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

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

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

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

    ПодсказкаВ сигнлтонах часто встречаются объявления методов класса с ключевыми словами: manager, shared, store.
    Если встретите интересный синглтон, изучите все его методы.
    (Видимо, «интересный» = «похоже, имеющий отношение к логике приложения». — Прим. пер.)РешениеТочно нашли? Посмотрите у себя внимательнее. Их там около четырёх штук.Да, все.
    • AFNetworking
    • MemeManager — интересный синглтон! Он содержит:
      @property(retain, nonatomic) AFHTTPClient* client; @property(readonly, assign, nonatomic) NSMutableArray* memes; +(id)sharedManager; -(void)memePurchased:(int)purchased; -(void)getMemeInformation; // кстати, это private-метод 
    • MoneyManager — тоже интересный синглтон:
      @property(readonly, assign, nonatomic) NSNumber* money; +(id)sharedManager; -(BOOL)saveState; // кстати, это private-метод -(void)loadState; // кстати, это private-метод -(BOOL)purchaseCurrency; -(BOOL)buyObject:(id)object; 
    • SVProgressHUD

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

    Есть две новости. Начну с хорошей.

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

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

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


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

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

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

    ls *.plist 

    А вот какие — две штуки:
    Info.plist MoneyDataStore.plist 

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

    Результат:
    { "DTSDKName" => "iphonesimulator7.0" "CFBundleName" => "Meme Collector" "CFBundleDevelopmentRegion" => "en" "CFBundleVersion" => "1.0" "DTPlatformName" => "iphonesimulator" …и ещё куча всего… 

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

    И видим:
    { "userCurrency" => 108 } 

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

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

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

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

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

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

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

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


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

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

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

    open ../Library/Preferences/com.selander.Meme-Collector.plist 

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

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

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


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

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

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

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

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

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


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

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

    strings "Meme Collector" 

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

    А, ну вот, одна строка:
    http://version1.api.memegenerator.net/Generator_Select_ByUrlNameOrGeneratorID 

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

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

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

    Кстати, Charles отлично перехватывает SSL-трафик.Мы не будем это делать, потому что не увидели HTTPS-урлов на выходе команды strings. Но этот шаг потребуется для других приложений, которые могут использовать HTTPS. В меню Proxy > Proxy Settings… > SSL нужно включить SSL-прокси и добавить домены, по которым требуется перехватывать (и расшифровывать) HTTPS-трафик. Пока вы это не сделаете, SSL будет выглядеть примерно так:


    При работающем Charles перезапустите Meme Collector. После запуска вы должны увидеть три запроса к version1.api.memegenerator.net, нажав на треугольник слева от урла (см. ниже). Раскроются три запроса, отличающиеся GET-параметрами. Например, у первого один GET-параметр: urlName=Foul-Bachelor-Frog — это видно на вкладке Request.

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

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

    Что происходит дальше? Приложение трижды делает одно и то же: HTTP-запрос по урлу картинки, пытается скачать её с cdn.memegenerator.co, получает 301-й редирект на cdn.memegenerator.net и качает оттуда.

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

    А я вообще не вижу, чтобы запрашивались картинки!При повторном запуске картинки могут браться из кэша симулятора, Charles лб этом не знает. Очистите кэш и перезапустите приложение.
    rm -R Library/Caches/ 

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

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

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

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

    • Match > Name: urlName
    • Replace > Value: success-kid

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

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

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

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

    Чтобы сделать это, перейдите к Proxy > Breakpoints. Нажмите Enable Breakpoints и нажмите Add, чтобы добавить новую точку останова. Появится окно Edit breakpoint, введите в нём следующие данные:

    • Protocol: http
    • Host: version1.api.memegenerator.net
    • опция Response включена

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

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

    Нашли, какой ключ влияет на цену?

    Это ranking. Чем больше ranking, тем меньше цена.


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

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

    Замечания по поводу перевода или неработающих примеров можно отправлять на почту dev@x128.ru.

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

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

    Plist-файлы — это необходимый файл, который есть во всех приложениях macOS. Содержимое каждого файла, конечно, различается, но вам будет сложно найти приложение, которое не поставляется с ними.

    Раньше файл Plist действительно легко редактировать в macOS, и стандартного приложения TextEdit было достаточно для этой работы.

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

    Для этого вы больше не можете открывать эти приложения с помощью TextEdit, и для этого вам нужно специальное приложение.

    Существует довольно много приложений, которые можно использовать для редактирования файла Plist в macOS, но лучший бесплатный вариант, который у вас есть, — это собственное приложение Apple Xcode.

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

    Установите Xcode и запустите его хотя бы один раз, чтобы убедиться, что он настроен правильно, а затем вы можете использовать его для редактирования файла Plist.

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

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

    Щелкните правой кнопкой мыши приложение и выберите параметр «Показать содержимое пакета» в контекстном меню.

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

    Щелкните по нему правой кнопкой мыши и выберите Open WithXcode.

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

    Просмотров сегодня: 361

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

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

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

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

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

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

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

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

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

    cd ~/Library/Preferences/ 

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

    sudo chown $USER aomDSP.plist sudo chmod u+w aomDSP.plist 

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

    Хакерские методы работы с файлами PLIST в Mac OS X

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

    PLIST — это сокращение от «property list» (список свойств), и редактирование файлов с этим расширением имени представляет собой основной метод модификации Mac OS X (а также некоторых других операционных систем). С помощью этого метода вы можете организовать данные таким образом, чтобы к ним могли получать доступ программы, и при этом они структурированы так, что при необходимости пользователи могут создавать собственные файлы этого типа. Это краткое описание, разумеется, практически ничего не говорит, но детальное описание файлов PLIST — это сложная и трудоемкая задача. Если вы действительно заинтересованы в функциональных возможностях файлов PLIST, внимательно изучите следующую документацию: http://developer.apple.com/documentation/Darwin/Reference/Manpages/man_/plist._.html или запустите программу Terminal и введите следующую команду: man plist.При настройке компьютера в соответствии с вашими личными потребностями, наиболее часто приходится настраивать файлы PLIST, в которых хранятся значения по умолчанию для настроек различных программ — от стандартных цветов до реакции программ на те или иные действия. Как правило, эти файлы находятся в папке Library/Preferences вашего домашнего каталога. В большинстве случаев модификация этих файлов безвредна, и при этом позволяет разблокировать довольно неожиданные функциональные возможности. Если вы случайно повредите файл при редактировании, вы можете просто переместить его в Корзину, и при следующем запуске приложения взамен удаленного файла будет сгенерирован новый. Разумеется, при этом вы потеряете все индивидуальные настройки, созданные для этой программы, поэтому лучший способ (как и во всех случаях хакинга, при возможности) заключается в том, чтобы создать резервную копию этого файла с целью последующего восстановления в случае неполадок.


    Существует множество способов доступа к файлам 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

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

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

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

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

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

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

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

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

    PlistEdit Pro — отличный редактор plist-файлов

    Наверное, каждый продвинутый пользователь Mac OS X в жизни хоть раз, да сталкивался с plist-файлами. Сегодня я расскажу читателям про очень интересное и простое приложение для работы с ними под названием PlistEdit Pro.

    Для начала, очень краткий ликбез. Файл с расширением .plist (Property List) представляет собой обыкновенный XML-файл с настройками приложений. Данный формат хорош тем, что он удобен и быстр в работе. Многие настройки приложений в таких файлах лежат в /Home/Library/Preferences, а их названия обычно состоят из 4 частей: приставка.компания.приложение.plist (к примеру, com.apple.iTunes.plist).

    Большинство таких файлов могут быть открыты в любом текстовом редакторе, но вот только их изменение может оказаться не простым занятием. В этом случае нам, как раз, и может пригодиться утилита PlistEdit Pro, которая отображает «сырой» текст файла в виде списка с тремя параметрами: название переменной (Key), тип данных (Class) и значение (Value).

    В приложении поддерживается drag-n-drop, поэтому отдельные переменные или целые секции можно перетаскивать мышкой, при этом не требуется вручную переписывать содержимое файла. Кстати, выбрав один из видов отображения его содержимого (бинарный, ASCII или XML), можно автоматически просматривать изменения в нижней части окна. А если добавить туда код «руками», то он синхронизируется с верхним XML-деревом.

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

    Также, в PlistEdit Pro предусмотрен продвинутый поиск с возможностью замены найденных элементов. Сужать и расширять диапазон поиска можно при помощи разнообразных критериев.

    Среди других преимуществ данного приложения можно выделить такие:

    • Полная история изменений.
    • Поддержка клавиатурных сокращений для быстрого доступа к некоторым функциям.
    • Интеграция с XCode.
    • Поддержка AppleScript.

    Единственное, что на мой взгляд, омрачает впечатление от PlistEdit Pro, — это его цена в 30$.

    Сайт разработчика: Fat Cat Software
    Стоимость: 29.95$
    Персональная оценка: 5

    Информация о файлах списка свойств

    Файл списка свойств информации - это структурированный текстовый файл, который содержит важную информацию о конфигурации для связанного исполняемого файла. Сам файл обычно кодируется с использованием кодировки Unicode UTF-8, а его содержимое структурируется с использованием XML. Корневой узел XML - это словарь, содержимое которого представляет собой набор ключей и значений, описывающих различные аспекты пакета. Система использует эти ключи и значения для получения информации о вашем приложении и его настройке.В результате ожидается, что все связанные исполняемые файлы (подключаемые модули, платформы и приложения) будут иметь файл списка свойств информации.

    По соглашению имя файла списка свойств информации - Info.plist . Это имя этого файла чувствительно к регистру и должно начинаться с заглавной буквы I . В приложениях iOS этот файл находится на верхнем уровне каталога пакета. В пакетах macOS этот файл находится в каталоге Contents пакета. Xcode обычно создает этот файл автоматически, когда вы создаете проект соответствующего типа.

    Важно: В следующих разделах обратите внимание на использование заглавных букв для файлов и каталогов, находящихся внутри пакета. Класс NSBundle и функции пакета Core Foundation учитывают случай при поиске ресурсов внутри каталога пакета. Несоответствие регистра может помешать вам найти ресурсы во время выполнения.

    Создание и редактирование файла списка свойств информации

    Самый простой способ создать файл списка свойств информации - позволить Xcode создать его за вас.Каждый новый проект на основе пакета, который вы создаете в Xcode, поставляется с файлом с именем <проект> -Info.plist , где <проект> - это имя проекта. Во время сборки этот файл используется для создания файла Info.plist , который затем включается в результирующий пакет.

    Чтобы отредактировать содержимое файла списка свойств информации, выберите файл -Info.plist в своем проекте Xcode, чтобы отобразить редактор списка свойств.На рисунке 1 показан редактор файла списка свойств информации нового проекта приложения Какао. Файл, созданный Xcode, предварительно сконфигурирован с ключами, которые должен иметь каждый список свойств информации.

    Рисунок 1 Редактирование списка свойств информации в Xcode

    Чтобы изменить значение для указанного ключа, дважды щелкните значение в редакторе списка свойств Xcode, чтобы выбрать его, затем введите новое значение. Большинство значений указываются в виде строк, но Xcode также поддерживает несколько других скалярных типов.Вы также можете указать сложные типы, такие как массив или словарь. Редактор списка свойств отображает соответствующий интерфейс для редактирования каждого типа. Чтобы изменить тип заданного значения, убедитесь, что значение не выбрано, и щелкните его, удерживая клавишу Control, чтобы отобразить его контекстное меню. В подменю Тип значения выберите тип, который вы хотите использовать для значения.

    Поскольку списки свойств информации обычно представляют собой просто текстовые файлы, их также можно редактировать с помощью любого текстового редактора, поддерживающего кодировку файлов UTF-8.Однако, поскольку они являются файлами XML, редактировать файлы списка свойств вручную обычно не рекомендуется.

    Добавление ключей в файл списка свойств информации

    Хотя файл Info.plist , предоставленный Xcode, содержит наиболее важные ключи, необходимые для системы, большинство приложений обычно должны указывать несколько дополнительных ключей. Многие подсистемы и системные приложения используют файл Info.plist для сбора информации о вашем приложении. Например, когда пользователь выбирает Файл> Получить информацию для вашего приложения, Finder отображает информацию по многим из этих ключей в итоговом информационном окне.

    Вы добавляете ключи в Info.plist своего приложения с помощью редактора списка свойств Xcode. Для получения информации о том, как использовать этот редактор, см. «Редактировать списки свойств».

    Важно: Редактор списка свойств в Xcode по умолчанию отображает удобочитаемые строки (вместо фактического имени ключа) для многих ключей. Чтобы отобразить фактические имена ключей, как они отображаются в файле Info.plist , щелкните любой из ключей в окне редактора, удерживая клавишу Control, и включите пункт «Показать необработанные ключи / значения» в контекстном меню.

    Список рекомендуемых ключей, которые следует включить в типичное приложение, см. В разделе «Рекомендуемые ключи Info.plist».

    Локализация значений списка свойств

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

    Локализованные значения не сохраняются в Info.plist сам файл. Вместо этого вы сохраняете значения для конкретной локализации в файле строк с именем InfoPlist.strings . Вы помещаете этот файл в тот же каталог проекта, зависящий от языка, который вы используете для хранения других ресурсов той же локализации. Содержимое файла InfoPlist.strings - это отдельные ключи, которые нужно локализовать, и соответствующее переведенное значение. Подпрограммы, которые ищут значения ключей в файле Info.plist , принимают во внимание языковые предпочтения пользователя и возвращают локализованную версию ключа (из соответствующего InfoPlist.strings file), если он существует. Если локализованная версия ключа не существует, подпрограммы возвращают значение, хранящееся в файле Info.plist .

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

      CFBundleDisplayName  
      TextEdit  
      NSHumanReadableCopyright  
     <строка> Авторские права ¬ © 1995-2009, Apple Inc.,Все права защищены. 
      

    Французская локализация TextEdit затем включает следующие строки в файл InfoPlist.strings его каталога Contents / Resources / French.lproj :

     CFBundleDisplayName = "TextEdit"; 
     NSHumanReadableCopyright = "Авторское право © Apple Inc., 1995-2009 гг. \ NTous droits réservés."; 

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

    Создание ключей для конкретных платформ и устройств

    Вы можете назначить ключ в файле Info.plist как относящийся к определенной платформе, определенному типу устройства или обоим. Чтобы создать вариант ключа для платформы или устройства, объедините имя корневого ключа с одним или двумя квалификаторами, используя следующий шаблон:

    key_root - <платформа> ~ <устройство>

    В этом шаблоне часть key_root представляет исходное имя ключа, как вы найдете его в этом документе.Части и не являются обязательными и ограничивают применимость ключа к определенной платформе или типу устройства. Обратите внимание, что если вы используете квалификатор платформы, соедините его с дефисом (), а если вы используете квалификатор устройства, соедините его с помощью тильды ().

    Квалификатор устройства используется гораздо чаще, чем

    .

    цель c - как программно редактировать plist в xcode 5 iOS 7?

    Переполнение стека
    1. Около
    2. Товары
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд
    .Цель

    c - Как программно создавать файлы PLIST в iphone

    Переполнение стека
    1. Около
    2. Товары
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частным
    .

    iphone - Как отредактировать файл Info.plist в папке сборки

    Переполнение стека
    1. Около
    2. Товары
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
    .

    Можно ли редактировать файлы plist с помощью…

    Объясняю:

    в / Library / Preferences, у меня много файлов .plist (например, /Library/Preferences/com.apple.SoftwareUpdate.plist).

    Просматривая эту папку в Finder, я могу предварительно просмотреть (с помощью QuickLook) эти файлы в их формате xml.

    Но если я пытаюсь открыть этот файл

    - с TextEdit, я получаю некоторую двоичную версию так:

    bplist00 фл

    ##% & (#_ LastSuccessfulDate_ IgnoringUnseenRamped_ LastAttemptSystemVersion_ LastBackgroundCCDSuccessfulDate \ SkipLocalCDN_ DidRegisterLocalUpdates_ lastDownloadError_ LastUpdatesAvailable_ LastRecommendedUpdatesAvailable_ AutomaticDownload_ RecommendedUpdates_ LastFullSuccessfulDate_ PrimaryLanguages]

    ... и так далее ...

    - с редактором nano в Терминале (nano /Library/Preferences/com.apple.SoftwareUpdate.plist) получаю то же самое.

    - с редактором pico в Терминале (pico /Library/Preferences/com.apple.SoftwareUpdate.plist), снова то же самое.

    Более того, когда я редактирую файл с помощью pico или nano, Finder и QuickLook больше не могут обеспечить предварительный просмотр, и файл, измененный таким образом, перезаписывается при следующем использовании

    (в этом случае при следующей проверке обновления программного обеспечения) по его старой версии.

    Вот мой вопрос:

    есть ли способ отредактировать xml-версию plist и сохранить ее таким образом, чтобы OS X учла ваши изменения?

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

    Возможно ли это?

    Спасибо тем, кто меня прочитает, большое спасибо тем, кто найдет время, чтобы ответить

    .

    Лучший способ создать pList в IOS

    Переполнение стека
    1. Около
    2. Товары
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    .

    Смотрите также