Головне: сьогодні Chainfire анонсувала бета-версію SuperSU 2.27, усунувши необхідність модифікації оперативного диска ядра для використання кореневого доступу на Android 5.0
Досі, якщо ви хотіли отримати root на Android 5.0, вам потрібно було встановити модифіковане ядро на свій пристрій, щоб обійти деякі обмеження SELinux. Старший визнаний розробник XDA Ланцюговий вогонь нещодавно випустила раніше необхідне CF-Auto-Root пакет, який вніс необхідні модифікації RAM-диска ядра, щоб усунути обмеження SELinux зі сценарію install-recovery.sh на AOSP. Однак цього ранку Chainfire викликав усмішки на багатьох обличчях, як і він оголосив у Twitter що в майбутньому це більше не буде потрібно.
До сьогоднішнього дня Chainfire планував випустити автоматизований інструмент виправлення на основі ZIP, щоб автоматично виправляти зображення ядра з відновлення TWRP, доки він не натрапить на відповідний метод, щоб усунути необхідність це.
Це відкриття означає, що користувачам Android 5.0 більше не потрібно запускати модифіковане ядро, щоб отримати root-доступ через SuperSU (або інші root-рішення). Незважаючи на те, що на пристроях Nexus із завантажувачами, які можна розблокувати, це не є великою проблемою, потреба у модифікації ramdisk була занепокоєння для багатьох користувачів пристроїв, заблокованих завантажувачем, для яких не доступне розблокування (так, вони, на жаль, є існує). Відповідь на їхні молитви вже тут, і ми можемо представити ексклюзивне пояснення необхідних змін. Принаймні на даний момент (доки/якщо Google не виправить це), можна отримати root-доступ, а потім встановити та використовувати SuperSU на стандартному пристрої Android 5.0 без будь-яких налаштувань ramdisk ядра. Причиною цього є потреба SuperSU запускати службу як root, щоб забезпечити необмежений root-доступ на пристроях, захищених SELinux.
Раніше SuperSU використовував попередньо встановлений AOSP flash_recovery (використовується в AOSP для оновлення відновлення після інсталяції OTA), щоб запустити демон SuperSU (який фактично надає привілеї root для програм, які їх запитують). З випуском Lollipop цю службу було додано до обмеженого контексту SELinux, тобто вона більше не має повного доступу до системи. Попередні модифікації ядра мали на меті зняти обмеження SELinux із цього сценарію.
Остання бета-версія SuperSU від Chainfire вирішує це за допомогою основної служби «Zygote» (відповідає за запуск усіх служб Java і, отже, усіх додатків, встановлених на пристрої). Оскільки Zygote є однією з небагатьох служб, доступних на Android L, яка запускається як root у необмежений контекст "ініціалізації" SELinux, це робить його основною метою для використання в роботі СуперСУ. Після завантаження служба Zygote має свій контекст «init» SELinux, який переходить до остаточного (обмеженого) контексту «Zygote». Chainfire вдалося успішно змінити файли Zygote, щоб запустити код від імені користувача root, у необмеженому контексті «init», таким чином повертаючи SuperSU до Android L без ядра модифікації.
Це не перший раз, коли Chainfire звертається до Zygote для вирішення цих проблем; у попередній бета-версії 2.23 Zygote використовувався як засіб для можливого обходу деяких інших проблем SELinux (які спричиняли збій кореневих програм на Android L). Це дозволило деяким (але не всім) непрацюючим програмам працювати – решта вимагають деяких оновлень розробниками. На жаль, під час перевірки коду 5.0 AOSP виявилося, що Google уже зламав цей метод захоплення служби Zygote. Зважаючи на те, що всі його попередні спроби захопити Zygote зазнали невдачі, це багатообіцяючий крок вперед.
Chainfire хотів підкреслити, що SuperSU вже давно може змінювати політики SELinux у запущеній системі (і застерігає щодо простоти з який OEM може вимкнути це та справді запобігти значущому та простому кореневому доступу), і як потрібно вносити будь-які зміни, внесені до Zygote ретельно, враховуючи, що служба запускається з різних контекстів, для різних завдань, і це підвищує ймовірність ряду (неприємних) тонкі невдачі. Ця нова бета-версія SuperSU 2.27 — це збірка для ентузіастів та інших технарів, з якою можна пограти, щоб дізнатися, що ламається. Схрещуємо пальці – немає несподіваних негативних помилок, і це життєздатний шлях вперед.
Зверніть увагу: навіть якщо ця бета-версія спрацює і Zygote стане кращим способом отримання root-доступу, у майбутньому весь процес буде лише однорядковою зміною щоб бути зламаним Google, що зробило б виправлені ramdisk ядра майбутнім для root-доступу на Android (таким чином виключаючи root для заблокованого завантажувача пристрої). Насправді, якщо попереджати, новий процес може навіть не працювати на повністю оновленій збірці AOSP через деякі досить великі SELinux зміни за останні кілька місяців, які не були включені в роздрібні пристрої, але які, без сумніву, будуть там у майбутньому випуски. Рано чи пізно, здається, ймовірно, що модифіковані RAM-диски ядра знадобляться для root-права, але ця нова бета-версія може запропонувати коротку призупинення виконання, перш ніж ми повинні рухатися в цьому напрямку.
Перевірити примітки до випуску для отримання додаткової інформації про ризики, пов’язані з тестуванням, і для посилань. Розробникам також слід пам’ятати, що зараз Chainfire активно працює над Посібник "How-To SU". (повністю оновлений для Android 5.0), який має бути доступним протягом наступних кількох днів.
[Величезна подяка Chainfire за його роботу тут і допомогу в підготовці цієї статті.]