SuperSU BETA: Root Android Lollipop na Stock Kernel

Novo: Chainfire je danes objavil SuperSU Beta 2.27, ki odpravlja potrebo po spremembah pomnilniškega diska jedra za uporabo korenskega dostopa v sistemu Android 5.0

Če ste do zdaj želeli pridobiti root v sistemu Android 5.0, ste morali v svojo napravo namestiti spremenjeno jedro, da bi se izognili nekaterim omejitvam SELinux. XDA Senior Recognished Developer Verižni ogenj pred kratkim izdal prej potrebno CF-Auto-Root paket, ki je opravil potrebne spremembe pomnilniškega diska jedra za odstranitev omejitve SELinux iz skripta install-recovery.sh na AOSP. Danes zjutraj pa je Chainfire privabil nasmeh marsikateremu obrazu, saj ga objavil na Twitterju da to v prihodnje ne bo več potrebno.

Do danes je Chainfire načrtoval izdajo avtomatiziranega orodja za popravke, ki temelji na ZIP, za samodejno popravljati slike jedra iz obnovitve TWRP, dokler ni naletel na ustrezno metodo za odpravo potrebe po to.

To razodetje pomeni, da uporabnikom Androida 5.0 ni več treba zagnati spremenjenega jedra, da bi pridobili korenski dostop prek SuperSU (ali drugih korenskih rešitev). Čeprav to ni velika težava na napravah Nexus z odklenjenimi zagonskimi nalagalniki, je bila potreba po spremembah pomnilniškega diska zaskrbljujoče za mnoge uporabnike naprav, zaklenjenih z zagonskim nalagalnikom, za katere odklepanje ni na voljo (da, na žalost so obstajajo). Odgovor na njihove molitve je zdaj tukaj, mi pa lahko predstavimo ekskluzivno razlago potrebnih sprememb. Vsaj za zdaj (dokler Google tega ne popravi) je možno pridobiti korenski dostop ter nato namestiti in uporabljati SuperSU na standardni napravi Android 5.0, brez kakršnega koli prilagajanja pomnilniškega diska jedra. Razlog za to je potreba, da SuperSU izvaja storitev kot root, da omogoči neomejen korenski dostop na napravah, zaščitenih s SELinux.

Prej je SuperSU izkoriščal vnaprej nameščen AOSP flash_recovery storitev (uporablja se v AOSP za posodobitev obnovitve po namestitvi OTA), da zaženete demon SuperSU (ki dejansko zagotavlja korenske pravice za aplikacije, ki to zahtevajo). Z izdajo Lollipop je bila ta storitev dodana v omejen kontekst SELinux, kar pomeni, da nima več neokrnjenega dostopa do sistema. Prejšnje spremembe jedra so poskušale odstraniti omejitve SELinuxa iz tega skripta.

Najnovejša beta izdaja SuperSU podjetja Chainfire to rešuje z uporabo osnovne storitve 'Zygote' (odgovorne za zagon vseh storitev Java in s tem vseh aplikacij, nameščenih v napravi). Ker je Zygote ena od edinih storitev, ki so na voljo v sistemu Android L, ki se zažene kot root znotraj neomejen kontekst "init" SELinux, zaradi česar je glavni cilj za uporabo pri delovanju SuperSU. Po zagonu storitve Zygote svoj kontekst »init« SELinux spremeni v končni (omejeni) kontekst »Zygote«. Chainfire je uspel uspešno spremeniti datoteke Zygote, da bi zagnal kodo kot root uporabnik, v neomejenem kontekstu "init", s čimer se SuperSU vrne v Android L, brez jedra modifikacije.

To ni prvič, da se je Chainfire za rešitev teh težav obrnil na Zygote; prejšnja različica 2.23 beta je uporabila Zygote kot sredstvo za morebitno izogibanje nekaterim drugim težavam SELinux (ki so povzročale okvare korenskih aplikacij v sistemu Android L). To je omogočilo delovanje nekaterih (vendar ne vseh) nedelujočih aplikacij – preostale zahtevajo nekaj posodobitev s strani razvijalcev. Na žalost se je ob pregledu kode 5.0 AOSP izkazalo, da je Google že zlomil to metodo prevzema storitve Zygote. Glede na to, da so bili vsi njegovi prejšnji poskusi prevzema Zygote neuspešni, je to obetaven korak naprej.

Chainfire je želel poudariti, da SuperSU že dolgo lahko spreminja pravilnike SELinux v delujočem sistemu (in opozarja na enostavnost kateri proizvajalec originalne opreme bi lahko to onemogočil in resnično preprečil smiseln in preprost korenski dostop) in kako je treba izvesti kakršne koli spremembe v Zygote previdno, glede na to, da se storitev izvaja iz različnih kontekstov, za različne naloge, kar povečuje možnost številnih (grodih) subtilne napake. Ta nova različica SuperSU beta 2.27 je gradnja za navdušence in druge tehnike, s katerimi se lahko igrajo, da ugotovijo, kaj se pokvari. Držimo pesti – ni nobenih nepričakovanih motenj, ki bi preprečile pojav, in to je uspešna pot naprej.

Upoštevajte – tudi če ta beta deluje in je Zygote najprimernejša pot za pridobitev korenskega dostopa, bo celoten postopek v prihodnje le sprememba ene vrstice stran od tega, da bi jih Google zlomil, zaradi česar bi popravljeni pomnilniški diski jedra postali prihodnost za korenski dostop v Androidu (s čimer bi izključili root za zaklenjen zagonski nalagalnik naprave). Resnično, kot opozorilo, novi postopek morda ne bo deloval niti na popolnoma posodobljeni zgradbi AOSP zaradi nekaterih dokaj velikih SELinuxov spremembe v zadnjih nekaj mesecih, ki niso bile vključene v maloprodajne naprave, ki pa bodo nedvomno tam v prihodnosti izdaje. Prej ali slej pa se zdi verjetno, da bodo spremenjeni pomnilniški diski jedra potrebni za root, vendar bo ta nova različica beta morda ponudila kratko prekinitev izvajanja, preden bomo morali iti v to smer.

Preveri opombe ob izdaji za več informacij o tveganjih, povezanih s tem preizkušanjem, in za povezave. Razvijalci se morajo tudi zavedati, da Chainfire trenutno trdo dela na Vodnik "How-To SU". (v celoti posodobljen za Android 5.0), ki naj bi bil na voljo v naslednjih nekaj dneh.

[Velika hvala Chainfireju za njegovo delo tukaj in pomoč pri pripravi tega članka.]