04.12.2013

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

image

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

Автор: Пратик Джианчандани (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: Установка приложения на устройство

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

Заключение

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

или введите имя

CAPTCHA