SuperSU BETA: Root Android Lollipop på lagerkernen

Breaking: Chainfire har i dag annonceret SuperSU Beta 2.27, hvilket fjerner behovet for kerne-ramdisk-modifikationer for at gøre brug af root-adgang på Android 5.0

Indtil nu, hvis du ønskede at få root på Android 5.0, var du nødt til at flashe en modificeret kerne på din enhed for at omgå nogle SELinux-begrænsninger. XDA Senior anerkendt udvikler Kædebål for nylig udgivet det tidligere nødvendige CF-Auto-Root pakke, som foretog de nødvendige kerne-ramdisk-modifikationer for at fjerne SELinux-begrænsning fra install-recovery.sh-scriptet på AOSP. Denne morgen bragte Chainfire dog smil på mange ansigter, da han annonceret på Twitter at dette ikke længere ville være nødvendigt fremover.

Indtil i dag havde Chainfire planlagt at frigive et automatiseret ZIP-baseret patching-værktøj til automatisk patch kernebilleder fra TWRP-gendannelse, indtil han stødte på en passende metode til at fjerne behovet for det her.

Denne åbenbaring betyder, at Android 5.0-brugere ikke længere behøver at køre en modificeret kerne for at få root-adgang via SuperSU (eller andre root-løsninger). Selvom det ikke er et stort problem på Nexus-enheder med oplåselige bootloadere, var behovet for ramdisk-modifikationer for mange brugere af bootloader-låste enheder, for hvilke der ikke er nogen oplåsning tilgængelig (ja, det gør de desværre eksisterer). Svaret på deres bønner er nu her, og vi kan præsentere en eksklusiv forklaring på de nødvendige ændringer. I det mindste indtil videre (indtil/medmindre Google retter dette), er det muligt at få root-adgang og derefter installere og bruge SuperSU på en standard Android 5.0-enhed uden nogen kerne-ramdisk-tweaking. Årsagen til dette er behovet for, at SuperSU kører en tjeneste som root, for at tillade ubegrænset root-adgang på SELinux-beskyttede enheder.

Tidligere ville SuperSU udnytte den forudinstallerede AOSP flash_recovery service (bruges i AOSP til at opdatere gendannelse efter en OTA-installation) for at starte SuperSU-dæmonen (som faktisk giver root-rettighederne til apps, der anmoder om det). Med udgivelsen af ​​Lollipop er denne tjeneste blevet tilføjet til en begrænset SELinux-kontekst, hvilket betyder, at den ikke længere har uforfalsket adgang til systemet. De tidligere kerneændringer forsøgte at fjerne SELinux-begrænsningerne fra dette script.

Chainfires seneste beta-udgivelse af SuperSU løser dette ved at bruge kerne-'Zygote'-tjenesten (ansvarlig for lancering af alle Java-tjenester, og dermed alle apps installeret på en enhed). Da Zygote er en af ​​de eneste tjenester, der er tilgængelige på Android L, som er startet som root i ubegrænset "init" SELinux kontekst, dette gør det til et primært mål for brug i driften af SuperSU. Efter opstart får Zygote-tjenesten sin SELinux "init"-kontekst overført til dens endelige (begrænsede) "Zygote"-kontekst. Chainfire har formået at ændre Zygote-filerne for at køre kode som root-brugeren, inden for den ubegrænsede "init" kontekst, hvilket bringer SuperSU tilbage til Android L, uden kerne ændringer.

Det er ikke første gang, Chainfire henvender sig til Zygote for at løse disse problemer; den tidligere 2.23 beta brugte Zygote som et middel til muligvis at omgå nogle andre SELinux-problemer (som fik root-apps til at gå i stykker på Android L). Dette gjorde det muligt for nogle (men ikke alle) af de ikke-fungerende apps at fungere - resten kræver nogle opdateringer af deres udviklere. Desværre, da 5.0 AOSP-koden blev konsulteret, kom det frem, at Google allerede havde brudt denne metode til at overtage Zygote-tjenesten. I betragtning af at alle hans tidligere forsøg på at overtage Zygote var mislykkedes, er dette et lovende skridt fremad.

Chainfire var ivrig efter at påpege, at SuperSU længe har været i stand til at ændre SELinux-politikker på et kørende system (og advarer om letheden med som en OEM kunne deaktivere dette og virkelig forhindre meningsfuld og enkel root-adgang), og hvordan eventuelle ændringer foretaget til Zygote skal foretages omhyggeligt, da tjenesten drives fra forskellige sammenhænge, ​​til forskellige opgaver, og dette rejser muligheden for en række (grimme) subtile fiaskoer. Denne nye SuperSU beta 2.27 er en build for entusiaster og andre teknikere at lege med for at finde ud af, hvad der går i stykker. Krydser fingre--der er ingen uventede show-stopper-fejl, og dette er en farbar vej frem.

Bemærk - selvom denne beta fungerer, og Zygote er den foretrukne vej til at få root-adgang, er hele processen fremadrettet kun en enkelt-linje ændring væk fra at blive brudt af Google, hvilket ville gøre patchede kerne-ramdiske til fremtiden for root-adgang på Android (og dermed udelukke root for bootloader-låst enheder). Faktisk, som en heads-up, fungerer den nye proces muligvis ikke engang på en fuldt opdateret AOSP-bygning på grund af nogle ret store SELinux ændringer inden for de seneste måneder, som ikke var inkluderet i detailudstyret, men som uden tvivl vil være der i fremtiden udgivelser. Før eller siden virker det dog sandsynligt, at modificerede kerne-ramdiske vil være nødvendige for root, men denne nye beta kan tilbyde et kort ophold i udførelse, før vi må gå i den retning.

Tjek ud udgivelsesbemærkningerne for mere information om de risici, der er forbundet med at teste dette, og for links. Udviklere bør også være opmærksomme på, at Chainfire i øjeblikket arbejder hårdt på "How-To SU" guide (fuldt opdateret til Android 5.0), som skulle være tilgængelig inden for de næste par dage.

[En stor tak til Chainfire for hans arbejde her og hjælp til at forberede denne artikel.]