Безопасность IOS-приложений (часть 7) – установка и запуск собственных приложений на устройстве без использования зарегистрированной учетной записи разработчика

Безопасность IOS-приложений (часть 7) – установка и запуск собственных приложений на устройстве без использования зарегистрированной учетной записи разработчика

Обычно для того чтобы протестировать приложение на устройстве необходимо иметь регистрацию на сайте разработчиков, что стоит около 99 долларов в год. Для тех, кто желает изучать безопасность IOS-приложений необходимо иметь возможность запускать приложения на устройстве, чтобы проводить тесты.

image

Автор: Пратик Джианчандани (Prateek Gianchandani)

Обычно для того чтобы протестировать приложение на устройстве необходимо иметь регистрацию на сайте разработчиков, что стоит около 99 долларов в год. Для тех, кто желает изучать безопасность IOS-приложений необходимо иметь возможность запускать приложения на устройстве, чтобы проводить тесты. Возможно, некоторым людям, которые не желают публиковать свои творения в магазине приложений, нет особого смысла платить по 99 долларов каждый год. В этой статье мы рассмотрим способы компиляции и установки приложений на джейлбрейковом устройстве без использования учетной записи разработчика. Затем в следующей статье мы рассмотрим реализацию method swizzling (и других техник) при помощи Cycript.

В наших экспериментах мы будем использовать Xcode 4.5.2 на платформе IOS 5.1. Возможно, и на других версиях Xcode и IOS эти техники также буду рабочими. Если у вас возникнут какие-либо трудности с запуском приложений на устройстве, напишите об этом в комментариях.

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

Откройте приложение Keychain Access. Выберите в меню Keychain Access –> Certificate Assistant –> Create a Certificate.

Рисунок 1: Для создания сертификата выбираем соответствующий пункт меню в приложении Keychain Access

Укажите имя сертификата, тип сертификата (необходимо выбрать тип Code Signing) и снимите флажок Let me Override defaults. Далее кликните на кнопку Create, а затем на Continue.

Рисунок 2: Установка параметров для нового сертификата

Появляется окно с сообщением о том, что сертификат успешно создан.

Рисунок 3: Окно с сообщением об успешном создании сертификата

Теперь скопируем файл Info.plist из папки /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist на Рабочий стол, поскольку мы хотим внести изменения, но не можем сделать этого в первоначальном файле. Собственно, для этого мы и проделываем этот трюк: копируем на Рабочий стол, редактируем файл и кладем файл обратно.

Рисунок 4: Выполнение команды для копирования файла Info.plist на рабочий стол

Открываем файл.

Рисунок 5: Открытие файла Info.plist, находящегося на рабочем столе

Замените все значения XCiPhoneOSCodeSignContext на XCCodeSignContext и сохраните файл. Теперь ваш файл должен выглядеть так.

Рисунок 6: Обновленный файл с отредактированными значениями некоторых параметров

Теперь скопируйте этот файл туда, откуда вы его взяли (для этого необходимо владеть соответствующими правами доступа). Я использовал команду sudo cp /Users/prateekgianchandani/Desktop/Info.plist/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist

Рисунок 7: Копирования обновленного файла в первоначальное месторасположение

Теперь создадим простейший проект в Xcode. Откройте Xcode, кликните на Create a new Xcode Project, а затем выберите Single View Application.

Рисунок 8: Создание проекта в Xcode

Дайте имя проекту (например, SelfSignedApp), затем кликните Next, а затем кликните на Create.

Рисунок 9: Параметры нового проекта в Xcode

Поскольку мы будем запускать приложение на платформе IOS 5.1, мы должны убедиться, что значение параметра IOS Deployment target соответствует версии платформы. Кликните на имя проекта в Project Navigator (в верхнем левом углу), выберите проект, а затем внутри вкладки Info установите в параметр IOS Deployment target значение 5.1.

Рисунок 10: Выставление параметра IOS Deployment target

Поскольку IOS 5.1 не поддерживает функцию Autolayout для приложений с storyboard, необходимо снять соответствующий флажок.

Рисунок 11: Снятие флажка Use Autolayout

Теперь перебросьте текстовую метку (label) на storyboard и напишите в метке какой-нибудь текст.

Рисунок 12: Создание простейшей текстовой метки

Теперь в Xcode необходимо подписать наше приложение при помощи ранее созданного сертификата. Для этого кликните на имени проекта в Project Navigator (в левом верхнем углу), выберите проект, а затем внутри вкладки Build Settings выберите сертификат, который мы создали ранее. Если сертификат не показывается в выпадающем меню, попробуйте заново открыть проект.

Рисунок 13: Привязка сертификата к проекту

Теперь необходимо выбрать устройство, на котором вы будете запускать приложение. Если по каким-то причинам устройство не показывается в списке, нужно зайти в Organizer –> Devices –> Ваше устройство и кликнуть на Use for development.

Рисунок 14: Выбор устройства, на котором будет запущено приложение

После выбора устройства кликните на кнопку Run, после чего появится предупреждение (см. рисунок ниже). Кликните на Always Allow. У вас может возникнуть ошибка на устройстве или в Xcode, однако приложение будет установлено. Просто отключите устройство от компьютера, закройте приложение и запустите его снова. Приложение запустится без каких-либо проблем.

Рисунок 15: Окно с предупреждением, появляющееся во время запуска приложения

Существуют и другие способы запуска приложения на устройстве. После компиляции будет создан файл с расширением .app в соответствующей директории Xcode. По умолчанию билд хранится в папке /Users/$[YOUR_USER_NAME]/Library/Developer/Xcode/DerivedData/$[YOUR_APP_NAME_APP_ID]/Build/Products/Debug-iphoneos/.

В моем случае в билд хранится в папке /Users/prateekgianchandani/Library/Developer/Xcode/DerivedData/SelfSignedApp-bfzixtyoynrxxlgigskifizrfqqw/Build/Products/Debug-iphoneos/.

Скопируйте файл с расширением .app на Рабочий стол при помощи следующей команды.

mv /Users/$[YOUR_USER_NAME]/Library/Developer/Xcode/DerivedData/$[YOUR_APP_NAME_APP_ID]/Build/Products/Debug-iphoneos/SelfSignedApp.app /Users/$[YOUR_USER_NAME]/Desktop/

Рисунок 16: Копирование билда приложения на Рабочий стол

Теперь создайте папку с именем Payload, положите в нее файл SelfSigned.app, заархивируйте папку (первоначально у архива будет имя Payload.zip) и переименуйте файл в SelfSigned.ipa. Далее мы увидим, что файл .ipa представляет собой хранилище файлов приложения.

После создание файл .ipa его можно установить на устройство двумя способами. Во-первых, можно просто переместить ipa-файл в раздел приложений в iTunes, и далее использовать iTunes для установки приложения на устройство.

Во-вторых, можно загрузить ipa-файл на устройство при помощи sftp, а затем установить приложение, используя утилиту installipa. Утилиту installipa можно загрузить сразу на устройство при помощи Cydia.

Загрузите файл на устройство, используя sftp.

Рисунок 17: Загрузка файла .ipa на устройство

Затем подключитесь к устройству через ssh и установите приложение при помощи installipa.

Рисунок 18: Установка приложения на устройство

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

Заключение

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

Подписывайтесь на каналы "SecurityLab" в TelegramTelegram и Яндекс.ДзенЯндекс.Дзен, чтобы первыми узнавать о новостях и эксклюзивных материалах по информационной безопасности.

Комментарии для сайта Cackle