Деякі iOS-додатки перевіряють версію операційної системи на пристрої. Нещодавно, під час тестування однієї програми, я як раз і зіткнувся з подібною перевіркою. Якщо версія iOS була нижче 7.1, додаток не встановлювалося, і випадали помилка.
Деякі iOS-додатки перевіряють версію операційної системи на пристрої. Нещодавно, під час тестування однієї програми, я як раз і зіткнувся з подібною перевіркою. Якщо версія iOS була нижче 7.1, додаток не встановлювалося, і випадали помилка.
У цій статті будуть розглянуті наступні теми:
- Зміна версії iOS в файлі SystemVersion.plist.
- Зміна версії в plist-файлі, що знаходяться в пакеті програми.
- Використання утиліти «iOS-ssl-Kill switch» для обходу валідації сертифіката.
Зміна версії iOS в файлі SystemVersion.plist
Версія iOS може бути змінена (на джейлбрейковом пристрої) в два простих кроки за допомогою зміни відповідного значення в файлі SystemVersion.plist:
Малюнок 1: Вміст файлу SystemVersion.plist
Цей трюк дозволяє змінити значення, що відображається в розділі 'Settings / General / about'. Однак метод спрацює лише для тих додатків, які перевіряють версію в файлі SystemVersion.plist. Якщо після зміни версії, додаток все одно відмовляється працювати, використовуйте другий метод.
Зміна версії в plist-файлі, що знаходяться в пакеті додатки
Другий метод, що дозволяє змінити версію, складається з трьох простих кроків:
- Перейменовуємо файлу ipa в .zip і розпаковуємо архів.
- Змінюємо значення 'minimum ios version' у файлі info.plist, який зазвичай знаходиться в папці \ Payload \ appname.app.
- Пакуємо архів і перейменовуємо його назад в ipa. [Примітка: деякі додатки перевіряють значення 'minimum ios version' в інших plist-файлах, що знаходяться в пакеті].
Малюнок 2: Вміст файлу info.plist
Після зміни plist-файлів порушується підпис пакета. Для вирішення цієї проблеми, необхідно зареєструвати IPA за допомогою утиліти з цієї статті.
Деякі додатки перевіряють версію iOS під час установки. Коли користувач встановлює додаток за допомогою iTunes або xcode, використовуючи IPA, відбувається перевірка версії iOS, запущеної на пристрої, і якщо версія нижче, ніж потрібно, з'являється помилка.
Малюнок 3: Помилка, що виникає при установці додатка через xcode
Подібна перевірка також обходиться в кілька кроків:
- Перейменовуємо файл .ipa в .zip і витягаємо папку .app.
- Копіюємо папку .app туди, де встановлені iOS додатки (/ root / application) за допомогою будь-якого SFTP-клієнта (наприклад, WinSCP).
- Підключаємося до пристрою через SSH, заходимо в папку, де встановлений IPA, а потім ставимо права на запуск у папки .app (chmod -R 755 або chmod -R 777). Альтернативний спосіб - натиснути правою кнопкою миші на папці .app в WinSCP і змінити властивості директорії, встановивши відповідні права.
- Після перезапуску iOS пристрої додаток буде успішно встановлено.
Малюнок 4: Встановлення нових прав для директорії
Обхід валідації сертифікату
Іноді буває важко витягти сертифікат з програми і встановити його всередину проксі. Альтернатива - використовувати утиліту ios-ssl-kill-switch. ios-ssl-kill-switch чіпляється до Secure Transport API (найнижчий рівень) і відключає перевірку сертифіката. Більшість перевірок використовують NSURLConnection на більш високому рівні. Більше подробиць можна дізнатися тут.
Перевірка сертифіката обходиться в кілька кроків:
- Встановлюємо утиліту kill-ssl-switch.
- Всі залежні пакети повинні бути встановлені заздалегідь.
- Перезапускаємо пристрій або перезапустіть SpringBoard за допомогою наступної команди 'killall -HUP SpringBoard'.
- Встановлюємо опцію Disable Certificate Validation в розділі 'Settings / SSL Kill Switch'.
- Перезапускаємо додаток, після чого трафік повинен перехоплюватися успішно.
Прив'язка сертифіката (Certificate pinning) обходиться шляхом подцепленний до API, що виконує валідацію сертифікату, і постійного повернення «істини» при перевірці. Для вирішення цього завдання цілком підійде фреймворк Mobilesubstrate. Існує кілька інших корисних утиліт для відключення прив'язки, наприклад 'Trustme' і 'Snoop-it'.
Малюнок 5: Відключення перевірки сертифіката в SSL Kill Switch