Не App Store единым. Устанавливаем сторонние приложения в iOS без джейла — «Хакер»

Не App Store единым. Устанавливаем сторонние приложения в iOS без джейла — «Хакер» Сертификаты

Почему нельзя просто установить приложение

На сов­ремен­ных мобиль­ных плат­формах мож­но запус­кать толь­ко код, под­писан­ный циф­ровой под­писью. Но если в Android мож­но залить пакет при­ложе­ния, под­писан­ный обыч­ным циф­ровым сер­тифика­том, то в iOS ситу­ация слож­нее: пакет под­писыва­ется в момент уста­нов­ки, а уни­каль­ная для каж­дого устрой­ства циф­ровая под­пись раз­реша­ет запус­кать его лишь на том устрой­стве, для которо­го она была соз­дана.

До­бавим сюда тот факт, что циф­ровые под­писи в одно лицо выда­ет (а может и отоз­вать!) толь­ко сама ком­пания Apple, и получим ситу­ацию, в которой никакой непод­писан­ный (точ­нее — под­писан­ный «неп­равиль­ной» циф­ровой под­писью) код на устрой­стве выпол­нять­ся не может.

4 метода обхода верификации ssl-сертификатов в android

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

Автор: Cody Wass

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

  • Добавление сертификатов в хранилище достоверных сертификатов.
  • Перезапись упакованных сертификатов.
  • Использование скрипта Frida для обхода проверок SSL-сертификатов.
  • Изменение кода проверки сертификата.

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

Зачем нужна MITM-атака на SSL

Чтобы просматривать и изменять вызовы веб-службы, используемой мобильным приложением, нам понадобится промежуточный прокси сервер для перехвата, созданный при помощи утилит навроде BurpSuite или ZAP. При перехвате SSL-трафика SSL-соединение прерывается на стороне прокси-сервера. Сертификат, отсылаемый прокси-сервером, анализируется мобильным приложением, как если бы прокси был оконечной точкой веб-службы. По умолчанию самоподписанный сертификат, генерируемые утилитами наподобие Burp, не будет принадлежать проверенной достоверной цепочке. Если сертификат нельзя проверить на достоверность, большинство мобильных будут обрывать соединение вместо того, чтобы подключаться и работать в потенциально незащищенном канале. Техники, представленные ниже, предназначены для одной цели – убедить мобильное приложение, что сертификат, отправляемый прокси-сервером, является достоверным.

Техника 1 – Добавление сертификата в хранилище пользовательских сертификатов

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

В Android есть два встроенных хранилища сертификатов, которые отслеживают, каким центрам сертификации доверяет операционная система: системное хранилище (хранит предустановленные сертификаты) и пользовательское хранилище (хранит сертификаты, добавленные пользователями).

Выдержка с сайта developer.android.com:

По умолчанию безопасные соединения (использующие протоколы TLS, HTTPS и им подобные) во всех приложениях доверяют предустановленным системным сертификатам. В Android 6.0 (API level 23) и более ранних версиях по умолчанию также считаются достоверными сертификаты, добавленные пользователями. Приложение может настраивать свои собственные соединения на уровне приложения (base-config) и на уровне домена (domain-config).

Сей факт означает, что, если мы имеем дело с приложением, которое работает в Android 6.0 и более ранних версиях, то можно просто добавить сертификат в пользовательское хранилище. Когда приложение пытается проверить достоверность цепочки для нашего сертификата, то обнаружит, что наш центр сертификации связан с достоверным хранилищем и, следовательно, будет доверять нашему сертификату. В более новых версиях приложение не будет доверять хранилищу пользовательских сертификатов. Чтобы решить эту проблему, нужно прописать такой уровень API и версию Android, чтобы приложение стало доверять пользовательским центрам сертификации. Мы будем редактировать атрибут «platformBuildVersionCode» элемента «manifest» в файле AndroidManifest.xml.

<manifest xmlns:android=”http://schemas.android.com/apk/res/android&quot; package=”com.test.app” platformBuildVersionCode=”25″ platformBuildVersionName=”7.1.1″>

В коде выше в строке «platformBuildVersionCode=25» нужно поменять значение 25 на 23, а в строке platformBuildVersionName=”7.1.1″ значение 7.1.1 на 6.0.

<manifest xmlns:android=”http://schemas.android.com/apk/res/android&quot; package=”com.test.app” platformBuildVersionCode=”23″ platformBuildVersionName=”6.0“>

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

Про сертификаты:  Маркировка товаров – знак ЕАС

Если требуется запуск на конкретной версии платформы, мы можем определить тэг trust-anchors в файле «/res/xml/network_security_config.xml». Например, следующий файл (https://developer.android.com/training/articles/security-config.html) определяет новый достоверный сертификат, который должен храниться по адресу /res/raw/my_ca.

 <?xml version="1.0"  encoding="utf-8"?>
  <network-security-config>
  <base-config>
  <trust-anchors>
  <certificates src="@raw/my_ca"/>
  </trust-anchors>
  </base-config> 
</network-security-config>

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

Техника 2 – Перезапись упакованного сертификата

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

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

Не App Store единым. Устанавливаем сторонние приложения в iOS без джейла — «Хакер»
Рисунок 1: Перечень сертификатов, используемых приложением

Если открыть пакет приложения при помощи, например, APK Studio, то можно сразу увидеть перечень привязанных сертификатов. На картинке выше сертификаты находятся в папке «assets». Замена явно бросающегося в глаза сертификата UniversalRootCA позволит нам подсунуть приложению наш сертификат.

Техника 3 – Подключение к функциям через фреймворк Frida

Если установки собственного сертификата недостаточно для успешного перехвата SSL-трафика, скорее всего, в приложении используются техники навроде SSL pinning или дополнительная SSL-валидация. В этом случае нужно блокировать проверки через непосредственное подключение к соответствующим функциям. Ранее эта техника была доступна для реализации только на устройствах с правами суперпользователя. Однако на данный момент при помощи библиотеки Frida Gadget можно работать с приложением и получить доступ к полному функционалу фреймворка Frida без прав суперпользователя.

Если вы уже выполняли пентесты мобильных приложений, то, вероятно, знакомы с этим фреймворком. Описание всей функциональности Frida выходит за рамки этой статьи, но если говорить в общем, то этот фреймворк позволяет изменять логику работы приложения во время выполнения. Обычно Frida работает как отдельное приложение и требует прав суперпользователя на устройстве. Если у нас нет прав суперпользователя, мы можем инжектировать в пакет приложения динамическую библиотеку Frida Gadget, содержащую большую часть функционала фреймворка Frida. Эта библиотека загружается во время выполнения приложения и позволяет вносить изменения в код.
Чтобы загрузить Frida Gadget, нужно распаковать APK, вставить динамическую библиотеку, отредактировать smali-код так, чтобы динамическая библиотека вызывалась самой первой, а затем переупаковать и установить пакет. Весь этот процесс хорошо задокументирован Джоном Козиракисом (John Kozyrakis). Вначале лучше пройти все этапы вручную, чтобы лучше понять, как работает эта технология. Чтобы сэкономить время, существует утилита – Objection, которая автоматизирует весь вышеупомянутый процесс. Требуется лишь указание целевого пакета, над которым нужно выполнить манипуляции.

 C:  >objection patchapk -s test_app.apk
  No  architecture specified. Determining it using `adb`...
  Detected  target device architecture as: armeabi-v7a
  Github  FridaGadget is v10.6.28, local is v10.6.13. Updating...
  Downloading  armeabi-v7a library to  C:.objectionandroidarmeabi-v7alibfrida-gadget.so.xz...
  Unpacking  C:.objectionandroidarmeabi-v7alibfrida-gadget.so.xz...
  Cleaning up  downloaded archives...
  Using Gadget  version: 10.6.28
  Unpacking  test_app.apk
  App already  has android.permission.INTERNET
  Reading  smali from:  C:Temptmp8dxqks1u.apktempsmalicom/test/app/TestMainActivity.smali
  Injecting  loadLibrary call at line: 10
  Writing  patched smali back to: C:Temptmp8dxqks1u.apktempsmalicom/test/app/TestMainActivity.smali
  Creating  library path: C:Temptmp8dxqks1u.apktemplibarmeabi-v7a
  Copying  Frida gadget to libs path...
  Rebuilding  the APK with the frida-gadget loaded...
  Built new  APK with injected loadLibrary and frida-gadget
  Signing new  APK.
  jar signed.
  Signed the  new APK
  Performing  zipalign
  Zipaling  completed
  Copying  final apk from  C:UserscwassAppDataLocalTemptmp8dxqks1u.apktemp.aligned.objection.apk to  current directory...
Cleaning up  temp files...

После завершения в нашей рабочей директории должен появиться файл «test_app.objection.apk». По умолчанию утилита objection добавляет постфикс «.objection» к имени пакета. Далее мы можем установить этот пакет так же, как и любой другой APK, при помощи команды adb install test_app.objection.apk. После того как измененный пакет установлен на целевом устройстве, во время запуска приложение должно встать на паузу на начальном экране. В этот момент мы можем подключиться к серверу Frida, который отслеживает наше устройство:

C:>frida-ps -U
PID Name
—- ——
6383 Gadget

C:>frida -U gadget
____
/ _ | Frida 10.3.14 – A world-class dynamic instrumentation framework
| (_| |
> _ | Commands:
/_/ |_| help -> Displays the help system
. . . . object? -> Display information about ‘object’
. . . . exit/quit -> Exit
. . . .
. . . . More info at http://www.frida.re/docs/home/

Про сертификаты:  Дизайн интерьера квартир в Москве — Мастер ремонт

[Motorola Moto G (5) Plus::gadget]-> Java.available
true

Alternatively, Objection supports interaction with the listening Frida server by using the ‘explore’ command:

C:>objection explore
___| |_ |_|___ ___| |_|_|___ ___
| . | . | | | -_| _| _| | . | |
|___|___|_| |___|___|_| |_|___|_|_|
|___|(object)inject(ion) v1.2.2

Runtime Mobile Exploration
by: @leonjza from @sensepost

[tab] for command suggestions
com.test.app on (motorola: 7.0) [usb] # android hooking search classes TrustManager
android.security.net.config.RootTrustManager
android.app.trust.ITrustManager$Stub$Proxy
android.app.trust.ITrustManager
android.security.net.config.NetworkSecurityTrustManager
android.security.net.config.RootTrustManagerFactorySpi
android.app.trust.TrustManager
android.app.trust.ITrustManager$Stub
com.android.org.conscrypt.TrustManagerImpl
com.android.org.conscrypt.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker
com.android.org.conscrypt.TrustManagerImpl$TrustAnchorComparator
com.android.org.conscrypt.TrustManagerFactoryImpl
javax.net.ssl.TrustManagerFactory$1
javax.net.ssl.TrustManager
javax.net.ssl.TrustManagerFactory
javax.net.ssl.X509TrustManager
javax.net.ssl.TrustManagerFactorySpi
javax.net.ssl.X509ExtendedTrustManager
[Ljavax.net.ssl.TrustManager;

Теперь вы можете воспользоваться функцией для обхода технологии SSL pinning:

com.test.app on (motorola: 7.0) [usb] # android sslpinning disable
Job: 2f633f86-f252-4a57-958e-6b46ac8d69d1 – Starting
[6b46ac8d69d1] [android-ssl-pinning-bypass] Custom, Empty TrustManager ready
Job: 2f633f86-f252-4a57-958e-6b46ac8d69d1 – Started

Техника 4 – Реверс-инжиниринг кода верификации сертификата

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

Если использовать «dex2jar», синтаксис будет следующим:

C:>d2j-dex2jar.bat “C:test_app.apk”
dex2jar C:test_app.apk -> .test_app-dex2jar.jar

Полученный файл .jar должен быть пригоден для открытия в вашей любимой утилите для исследования Java-приложений (например, JD-GUI).

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

Заключение

Техники, описанные в этой статье, позволяют перехватывать SSL-трафик и обходить некоторые наиболее распространенные защиты, используемые разработчиками. Кроме того, я кратко рассказал об утилите Objection и фреймворке Frida. Обход технологии SSL pinning и других защит лишь небольшая часть возможностей, которые позволяют реализовать эти инструменты.

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

Nullximpactor

Nullximpactor — фак­тичес­ки аль­тер­натива Cydia Impactor, работа­ющая толь­ко на macOS, но поз­воля­ющая исполь­зовать для под­писи обыч­ные учет­ные записи.

Раз­работ­чик @nullx рекомен­дует исполь­зовать для под­писи одно­разо­вые Apple ID без двух­фактор­ной аутен­тифика­ции. В про­тив­ном слу­чае тебе при­дет­ся соз­дать в сво­ей учет­ной записи «пароль при­ложе­ния».

Дос­тоинс­тва: пос­ле началь­ной нас­трой­ки исполь­зовать дос­таточ­но прос­то.

Не­дос­татки: толь­ко macOS; тре­бует­ся началь­ная нас­трой­ка AltDeploy (инс­трук­ция); оста­ются все огра­ниче­ния пер­сональ­ной учет­ной записи (при­ложе­ние будет работать не доль­ше семи дней, а уста­новить мож­но не более трех при­ложе­ний).

Nullximpactor
Nullximpactor

Если вы хотите открыть приложение без подтверждения подлинности или созданное неизвестным разработчиком

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

Если вы по-прежнему хотите открыть приложение, разработчика которого не удаётся проверить, перейдите в «Системные настройки».*

Не App Store единым. Устанавливаем сторонние приложения в iOS без джейла — «Хакер»

Затем войдите в раздел «Защита и безопасность». Нажмите кнопку «Все равно открыть» на панели «Основные», чтобы подтвердить желание открыть или установить приложение. 

Окно системных настроек «Защита и безопасность» с кнопкой «Все равно открыть»

Снова появится предупреждение. Если вы действительно хотите открыть приложение, нажмите «Открыть». 

Уведомление macOS об обходе блокировки непроверенных разработчиков

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

Если отображается сообщение с предупреждением и не удается установить приложение

Если в настройках Mac вы разрешили устанавливать приложения только из App Store и пытаетесь установить приложение из другого источника, ваш Mac сообщит, что приложение невозможно открыть, потому что оно не было загружено из App Store*.

Окно предупреждения macOS: приложение невозможно открыть, потому что оно не было загружено из App Store.

Если в настройках Mac разрешено открывать приложения из App Store и от идентифицированных разработчиков и вы пытаетесь установить приложение, которое не подписано идентифицированным разработчиком — в macOS Catalina и более поздних версиях дополнительно требуется подтверждение подлинности от Apple, — система также предупредит о том, что приложение невозможно открыть.

Окно предупреждения macOS: приложение невозможно открыть, потому что не удается проверить разработчика.

Это предупреждение означает, что подлинность приложения не подтверждена и компания Apple не смогла проверить, является ли данное ПО вредоносным. 

Возможно, лучше найти обновленное приложение в App Store или другое приложение.

Защита конфиденциальности

ОС macOS была разработана для обеспечения безопасности пользователей и их данных при сохранении конфиденциальности.

Про сертификаты:  Минпромторг разрешил сервисное обслуживание ввт без лицензии

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

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

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

Кроме того, в следующем году мы внесем некоторые изменения в наши проверки безопасности:

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

* Если вам предложено открыть приложение в Finder и вы действительно хотите открыть его несмотря на предупреждение, нажав и удерживая клавишу Control, щёлкните приложение, после этого выберите «Открыть» в контекстном меню, а затем нажмите «Открыть» в появившемся диалоговом окне. Чтобы открыть приложение, введите имя администратора и пароль.

Идем в серую зону: подпись пакета обычным apple id

Итак, ты решил под­писать пакет при­ложе­ния обыч­ным Apple ID, не зарегис­три­рован­ным в прог­рамме Apple для раз­работ­чиков. До 2021 года эта опция была хоть и не широко извес­тной, но впол­не работос­пособ­ной с уче­том некото­рых огра­ниче­ний: под­писан­ное таким обра­зом при­ложе­ние работа­ло толь­ко семь дней, а уста­новить на одно устрой­ство мож­но было не более трех под­писан­ных пер­сональ­ными сер­тифика­тами при­ложе­ний.

Три года назад в Apple решили прик­рыть этот спо­соб уста­нов­ки, но сде­лали это не до кон­ца. Оставша­яся лазей­ка, впро­чем, работа­ет толь­ко на компь­юте­рах с macOS. Соот­ветс­твен­но, если у тебя есть Mac, то ты можешь поп­робовать одно из сле­дующих при­ложе­ний.

Официальный путь: аккаунт разработчика

Са­мый прос­той и единс­твен­но чес­тный путь решения этой проб­лемы — офи­циаль­ный. При желании при­ложе­ния все‑таки мож­но уста­нав­ливать, минуя App Store, но путь этот тер­нист, а для обыч­ного поль­зовате­ля прос­то недос­тупен.

Один из таких спо­собов — раз­личные вари­анты кор­поратив­ной и спе­циаль­ной дис­три­буции. Так, в слу­чае с кор­поратив­ной дис­три­буци­ей кли­ент (обра­зова­тель­ное учрежде­ние или круп­ная ком­пания — нап­ример, тран­спортная) регис­три­рует кор­поратив­ную учет­ную запись, получая воз­можность самос­тоятель­но под­писывать пакеты при­ложе­ний и рас­сылать их на кор­поратив­ные устрой­ства через MDM (Mobile Device Management).

Для под­писи исполь­зует­ся спе­циаль­ный enterprise-сер­тификат, срок дей­ствия которо­го, как пра­вило, огра­ничен одним годом, зато отсутс­тву­ют огра­ниче­ния на чис­ло под­писыва­емых им при­ложе­ний. При пер­вом запус­ке под­писан­ного таким сер­тифика­том при­ложе­ния поль­зовате­лю (если его устрой­ство не было заранее нас­тро­ено ком­пани­ей‑вла­дель­цем) нуж­но будет открыть нас­трой­ки и добавить сер­тификат в спи­сок доверен­ных.

В чем под­вох? Их сра­зу нес­коль­ко. Во‑пер­вых, в прог­рамме кор­поратив­ной дис­три­буции могут учас­тво­вать орга­низа­ции, но не час­тные лица. Во‑вто­рых, учас­тие в прог­рамме плат­ное. Наконец, мы не выходим из‑под кон­тро­ля Apple; ком­пания по‑преж­нему сох­раня­ет кон­троль над тем, раз­решить ли запуск при­ложе­ния на кон­крет­ном устрой­стве.

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

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

У это­го спо­соба есть как несом­ненные пре­иму­щес­тва, так и недос­татки в срав­нении с методом кор­поратив­ной дис­три­буции.

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

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

Так, а это точ­но «дос­тоинс­тво»? 99 дол­ларов в год — это немало все­го лишь за пра­во уста­нав­ливать собс­твен­ные при­ложе­ния на собс­твен­ный iPhone, да и сто устрой­ств — это за целый год: уда­ление ранее зарегис­три­рован­ного устрой­ства из учет­ной записи не выс­вобож­дает один из ста сло­тов.

Еще один недос­таток офи­циаль­ного спо­соба — жес­ткая при­вяз­ка дис­три­буции к сре­де раз­работ­ки Xcode, для работы которой, в свою оче­редь, пот­ребу­ется компь­ютер с macOS. Получа­ется слож­новато и дорого­вато, если у тебя слу­чай­но нет Mac.

На­конец, пос­ледний недос­таток метода — открыть учет­ную запись для раз­работ­чика час­тно­му лицу неп­росто из‑за рогаток, уста­нов­ленных Apple. Об исполь­зовании одно­разо­вых Apple ID мож­но забыть: Apple верифи­циру­ет дан­ные и может отка­зать в регис­тра­ции без объ­ясне­ния при­чин.

Наши раз­работ­чики говорят, что неп­лохие шан­сы получить акка­унт при исполь­зовании неново­го Apple ID, в котором ука­зан реаль­ный адрес (тот же, к которо­му при­вяза­на пла­теж­ная кар­та); регис­три­ровать­ся луч­ше с мака, а наличие исто­рии покупок с этой же учет­ной записи еще повыша­ет шан­сы.

На этом офи­циаль­ные спо­собы закан­чива­ются и начина­ются полу­офи­циаль­ные.

Оцените статью
Мой сертификат
Добавить комментарий