SuperSU BETA: root Android Lollipop su kernel stock

Novità: Chainfire ha annunciato oggi SuperSU Beta 2.27, eliminando la necessità di modifiche al ramdisk del kernel per utilizzare l'accesso root su Android 5.0

Fino ad ora, se volevi ottenere il root su Android 5.0, dovevi eseguire il flashing di un kernel modificato sul tuo dispositivo per aggirare alcune restrizioni di SELinux. Sviluppatore senior riconosciuto XDA Catena di fuoco ha recentemente rilasciato il necessario in precedenza CF-Root automatico pacchetto, che ha apportato le modifiche necessarie al ramdisk del kernel per rimuovere la restrizione SELinux dallo script install-recovery.sh su AOSP. Questa mattina, però, Chainfire ha fatto sorridere molti volti, come lui annunciato su Twitter che ciò non sarebbe più necessario in futuro.

Fino ad oggi, Chainfire aveva pianificato di rilasciare uno strumento di patch automatizzato basato su ZIP, per eseguire automaticamente patch delle immagini del kernel dall'interno del ripristino TWRP, finché non ha trovato un metodo adatto per eliminare la necessità di Questo.

Questa rivelazione significa che gli utenti di Android 5.0 non dovranno più eseguire un kernel modificato per ottenere l'accesso root tramite SuperSU (o altre soluzioni root). Sebbene non fosse un grosso problema sui dispositivi Nexus con bootloader sbloccabili, la necessità di modifiche al ramdisk lo era preoccupante per molti utenti di dispositivi con bootloader bloccato per i quali non è disponibile lo sblocco (sì, purtroppo lo fanno esistere). La risposta alle loro preghiere è ora qui e possiamo presentare una spiegazione esclusiva dei cambiamenti necessari. Almeno per ora (fino a quando/a meno che Google non aggiorni questo problema), è possibile ottenere l'accesso root e quindi installare e utilizzare SuperSU su un dispositivo Android 5.0 di serie, senza alcuna modifica del ramdisk del kernel. La ragione di ciò è la necessità che SuperSU esegua un servizio come root, per consentire l'accesso root senza vincoli sui dispositivi protetti da SELinux.

In precedenza, SuperSU sfruttava l'AOSP preinstallato flash_recovery service (utilizzato in AOSP per aggiornare la recovery dopo un'installazione OTA) per avviare il demone SuperSU (che di fatto fornisce i privilegi di root per le app che lo richiedono). Con il rilascio di Lollipop, questo servizio è stato aggiunto a un contesto SELinux ristretto, il che significa che non ha più accesso puro al sistema. Le precedenti modifiche al kernel cercavano di rimuovere le restrizioni SELinux da questo script.

L'ultima versione beta di SuperSU di Chainfire risolve questo problema utilizzando il servizio principale "Zygote" (responsabile del lancio di tutti i servizi Java e quindi di tutte le app installate su un dispositivo). Poiché Zygote è uno dei pochi servizi disponibili su Android L, che viene avviato come root all'interno del file contesto SELinux "init" senza restrizioni, questo lo rende un obiettivo primario da utilizzare nel funzionamento di SuperSU. Dopo l'avvio, il contesto "init" del servizio Zygote passa al contesto "Zygote" finale (limitato). Chainfire è riuscito a modificare con successo i file Zygote, per eseguire il codice come utente root, all'interno del contesto "init" illimitato, riportando così SuperSU su Android L, senza kernel modifiche.

Questa non è la prima volta che Chainfire si rivolge a Zygote per risolvere questi problemi; la precedente beta 2.23 utilizzava Zygote come mezzo per aggirare eventualmente altri problemi di SELinux (che causavano l'interruzione delle app root su Android L). Ciò ha consentito ad alcune (ma non a tutte) le app non funzionanti di funzionare, le restanti richiedono alcuni aggiornamenti da parte degli sviluppatori. Purtroppo, quando è stato consultato il codice AOSP 5.0, è emerso che Google aveva già violato questo metodo di acquisizione del servizio Zygote. Dato che tutti i suoi precedenti tentativi di prendere il controllo di Zygote erano falliti, questo è un passo avanti promettente.

Chainfire ha voluto sottolineare che SuperSU è da tempo in grado di modificare le policy di SELinux su un sistema in esecuzione (e avvertenze sulla facilità con cui quale un OEM potrebbe disabilitarlo e impedire veramente un accesso root semplice e significativo) e come devono essere apportate eventuali modifiche apportate a Zygote attentamente, dato che il servizio viene eseguito da contesti diversi, per compiti diversi, e questo aumenta la possibilità di una serie di (brutti) sottili fallimenti. Questa nuova SuperSU beta 2.27 è una build con cui gli appassionati e altri tecnici possono giocare, per scoprire cosa si rompe. Incrociamo le dita: non ci sono bug inaspettati che interrompono lo spettacolo, e questa è una strada praticabile.

Prendi nota: anche se questa beta funziona e Zygote è la strada preferita per ottenere l'accesso come root, in futuro l'intero processo sarà solo una modifica su una sola riga lontano dall'essere danneggiati da Google, il che renderebbe i ramdisk del kernel con patch il futuro per l'accesso root su Android (escludendo così root per bootloader bloccato dispositivi). In effetti, come avvertimento, il nuovo processo potrebbe non funzionare nemmeno su una build AOSP completamente aggiornata, a causa di alcuni SELinux abbastanza grandi cambiamenti avvenuti negli ultimi mesi, che non erano inclusi nei dispositivi di vendita al dettaglio, ma che senza dubbio ci saranno in futuro rilascia. Prima o poi, però, sembra probabile che i ramdisk del kernel modificati saranno necessari per il root, ma questa nuova beta potrebbe offrire una breve pausa di esecuzione prima di dover andare in quella direzione.

Guardare le note di rilascio per ulteriori informazioni sui rischi connessi al test e per i collegamenti. Gli sviluppatori dovrebbero anche essere consapevoli che Chainfire è attualmente al lavoro sul Guida "Come fare SU". (completamente aggiornato per Android 5.0), che dovrebbe essere disponibile nei prossimi giorni.

[Un enorme ringraziamento a Chainfire per il suo lavoro qui e per l'assistenza nella preparazione di questo articolo.]