SuperSU BETA: Root Android Lollipop на ядрото на Stock

Изключително: Днес Chainfire обяви SuperSU Beta 2.27, премахвайки необходимостта от модификации на рамдиск на ядрото, за да се използва root достъп на Android 5.0

Досега, ако искахте да получите root на Android 5.0, трябваше да флашнете модифицирано ядро ​​на вашето устройство, за да заобиколите някои ограничения на SELinux. XDA старши признат разработчик Верижен огън наскоро пусна необходимото преди това CF-Auto-Root пакет, който направи необходимите модификации на ramdisk на ядрото, за да премахне ограничението на SELinux от скрипта install-recovery.sh на AOSP. Тази сутрин обаче Chainfire предизвика усмивки на много лица, тъй като той съобщи в Twitter че това вече няма да е необходимо занапред.

До днес Chainfire планираше да пусне автоматизиран инструмент за корекции, базиран на ZIP, за автоматично корекция на изображения на ядрото от TWRP възстановяване, докато не попадне на подходящ метод за премахване на необходимостта от това.

Това разкритие означава, че потребителите на Android 5.0 вече не трябва да изпълняват модифицирано ядро, за да получат root достъп чрез SuperSU (или други root решения). Въпреки че не е огромен проблем за устройствата Nexus с отключващи се зареждащи програми, необходимостта от модификации на рамдиска беше загрижени за много потребители на устройства, заключени от буутлоудъра, за които не е налично отключване (да, те го правят за съжаление съществуват). Отговорът на техните молитви вече е тук и ние можем да представим ексклузивно обяснение на необходимите промени. Поне засега (докато/освен ако Google не коригира това), е възможно да получите root достъп и след това да инсталирате и използвате SuperSU на стандартно устройство с Android 5.0, без никакви настройки на рамдиска на ядрото. Причината за това е необходимостта SuperSU да изпълнява услуга като root, за да позволи неограничен root достъп на устройства, защитени от SELinux.

Преди това SuperSU щеше да използва предварително инсталирания AOSP flash_recovery услуга (използвана в AOSP за актуализиране на възстановяването след OTA инсталация), за да стартира демона SuperSU (който всъщност предоставя root привилегии за приложения, които го изискват). С пускането на Lollipop тази услуга е добавена към ограничен контекст на SELinux, което означава, че вече няма неподправен достъп до системата. Предишните модификации на ядрото се стремяха да премахнат ограниченията на SELinux от този скрипт.

Най-новата бета версия на SuperSU на Chainfire разрешава това, като използва основната услуга „Zygote“ (отговорна за стартирането на всички Java услуги и следователно всички приложения, инсталирани на устройство). Тъй като Zygote е една от единствените услуги, налични на Android L, която се стартира като root в рамките на неограничен "init" SELinux контекст, това го прави основна цел за използване при работата на СуперСУ. След стартиране, услугата Zygote има своя SELinux "init" контекст, прехвърлен към крайния (ограничен) "Zygote" контекст. Chainfire успя успешно да модифицира Zygote файловете, за да изпълни код като root потребител, в рамките на неограничения контекст "init", като по този начин връща SuperSU обратно към Android L, без ядро модификации.

Това не е първият път, когато Chainfire се обръща към Zygote, за да разреши тези проблеми; по-ранната 2.23 бета използва Zygote като средство за евентуално заобикаляне на някои други проблеми на SELinux (които причиняваха прекъсване на root приложения на Android L). Това позволи на някои (но не всички) от неработещите приложения да работят - останалите изискват някои актуализации от техните разработчици. За съжаление, когато беше консултиран кодът 5.0 AOSP, се оказа, че Google вече е нарушил този метод за поемане на услугата Zygote. Като се има предвид, че всичките му предишни опити да поеме Zygote се провалиха, това е обещаваща стъпка напред.

Chainfire искаше да посочи, че SuperSU отдавна е в състояние да променя политиките на SELinux на работеща система (и предупреждава относно лекотата с кой OEM би могъл да деактивира това и наистина да предотврати смислен и прост root достъп) и как трябва да се правят всички модификации, направени в Zygote внимателно, като се има предвид, че услугата се изпълнява от различни контексти, за различни задачи, и това повишава възможността за редица (неприятни) фини провали. Тази нова SuperSU бета 2.27 е компилация за ентусиасти и други техници, с които да си играят, за да открият какво се поврежда. Стискайте палци – няма неочаквани бъгове, които спират шоуто, и това е жизнеспособен път напред.

Обърнете внимание – дори ако тази бета версия работи и Zygote е предпочитаният път за получаване на root достъп, в бъдеще целият процес е само промяна на един ред далеч от разбиване от Google, което би направило рамдисковете с корекции на ядрото бъдещето за root достъп на Android (като по този начин изключва root за заключен буутлоудър устройства). Наистина, като хедс-ъп, новият процес може дори да не работи на напълно актуална компилация на AOSP, поради някои доста големи SELinux промени през последните няколко месеца, които не бяха включени в устройствата за продажба на дребно, но които без съмнение ще бъдат там в бъдеще издания. Рано или късно обаче изглежда вероятно, че модифицираните рамдискове на ядрото ще са необходими за root, но тази нова бета версия може да предложи кратко спиране на изпълнението, преди да трябва да тръгнем в тази посока.

Разгледайте бележките по изданието за повече информация относно рисковете, свързани с тестването на това, и за връзки. Разработчиците също трябва да са наясно, че в момента Chainfire работи усилено върху Ръководство "How-To SU". (напълно актуализиран за Android 5.0), който трябва да бъде наличен през следващите няколко дни.

[Огромни благодарности на Chainfire за работата му тук и помощта при подготовката на тази статия.]