SuperSU BETA: saknes Android Lollipop krājuma kodolā

Breaking: Chainfire šodien paziņoja par SuperSU Beta 2.27, novēršot nepieciešamību veikt kodola RAM diska modifikācijas, lai izmantotu saknes piekļuvi operētājsistēmā Android 5.0

Līdz šim, ja vēlējāties iegūt root operētājsistēmā Android 5.0, ierīcē bija jāievieto modificēts kodols, lai apietu dažus SELinux ierobežojumus. XDA vecākais atzītais izstrādātājs Ķēdes uguns nesen izlaida iepriekš nepieciešamo CF-Auto-Root pakotne, kas veica nepieciešamās kodola RAM diska modifikācijas, lai noņemtu SELinux ierobežojumu no AOSP skripta install-recovery.sh. Tomēr šorīt Chainfire izraisīja smaidu daudzās sejās, kā viņš paziņoja Twitter ka turpmāk tas vairs nebūs vajadzīgs.

Līdz šodienai Chainfire bija plānojis automātiski izlaist uz ZIP balstītu automātisku labošanas rīku ielāpu kodola attēlus no TWRP atkopšanas, līdz viņš atrada piemērotu metodi, lai novērstu nepieciešamību šis.

Šis atklājums nozīmē, ka Android 5.0 lietotājiem vairs nav nepieciešams palaist modificētu kodolu, lai iegūtu root piekļuvi, izmantojot SuperSU (vai citus saknes risinājumus). Lai gan Nexus ierīcēs ar atbloķējamiem sāknēšanas ielādētājiem tā nebija milzīga problēma, tomēr nepieciešamība pēc RAM diska modifikācijām bija attiecas uz daudziem lietotājiem ar bootloader bloķētām ierīcēm, kurām nav pieejama atbloķēšana (jā, diemžēl viņi to dara pastāv). Atbilde uz viņu lūgšanām tagad ir šeit, un mēs varam sniegt ekskluzīvu skaidrojumu par nepieciešamajām izmaiņām. Vismaz pagaidām (līdz/ja vien Google to nelabos) ir iespējams iegūt root piekļuvi un pēc tam instalēt un izmantot SuperSU standarta Android 5.0 ierīcē bez kodola RAM diska pielāgošanas. Iemesls tam ir nepieciešamība SuperSU palaist pakalpojumu kā root, lai nodrošinātu neierobežotu root piekļuvi SELinux aizsargātajās ierīcēs.

Iepriekš SuperSU izmantoja iepriekš instalēto AOSP flash_recovery pakalpojumu (izmanto AOSP, lai atjauninātu atkopšanu pēc OTA instalēšanas), lai palaistu SuperSU dēmonu (kas faktiski nodrošina saknes privilēģijas lietotnēm, kuras to pieprasa). Līdz ar Lollipop izlaišanu šis pakalpojums ir pievienots ierobežotam SELinux kontekstam, kas nozīmē, ka tam vairs nav neierobežotas piekļuves sistēmai. Iepriekšējās kodola modifikācijas mēģināja noņemt SELinux ierobežojumus no šī skripta.

Chainfire jaunākajā SuperSU beta versijā tas tiek atrisināts, izmantojot pamatpakalpojumu “Zygote” (kas ir atbildīgs par visu Java pakalpojumu un līdz ar to visu ierīcē instalēto lietotņu palaišanu). Tā kā Zygote ir viens no vienīgajiem pakalpojumiem, kas ir pieejami operētājsistēmā Android L, kas tiek palaists kā root neierobežotā "init" SELinux kontekstā, tas padara to par galveno mērķi izmantošanai SuperSU. Pēc sāknēšanas pakalpojuma Zygote SELinux "sākotnējais" konteksts tiek pāriets uz galīgo (ierobežoto) "Zygote" kontekstu. Chainfire ir izdevies veiksmīgi modificēt Zygote failus, lai palaistu kodu kā saknes lietotājs, neierobežotā “sākotnējā” kontekstā, tādējādi SuperSU atgriežot Android L bez kodola modifikācijas.

Šī nav pirmā reize, kad Chainfire ir vērsusies pie Zygote, lai atrisinātu šīs problēmas; Iepriekšējā 2.23 beta versija izmantoja Zygote kā līdzekli, lai, iespējams, apietu dažas citas SELinux problēmas (kas izraisīja saknes lietotņu darbības traucējumus operētājsistēmā Android L). Tas ļāva dažām (bet ne visām) nefunkcionējošām lietotnēm darboties — pārējām izstrādātājiem ir nepieciešami daži atjauninājumi. Diemžēl, kad tika apspriests 5.0 AOSP kods, izrādījās, ka Google jau ir pārkāpis šo Zygote pakalpojuma pārņemšanas metodi. Tā kā visi viņa iepriekšējie mēģinājumi pārņemt Zygote bija neveiksmīgi, tas ir daudzsološs solis uz priekšu.

Chainfire vēlējās norādīt, ka SuperSU jau sen ir spējusi modificēt SELinux politikas darbojošās sistēmās (un brīdina par to, ka kuru OEM varētu to atspējot un patiesi novērst jēgpilnu un vienkāršu root piekļuvi), un kā jāveic Zygote veiktās izmaiņas. rūpīgi, ņemot vērā, ka pakalpojums tiek palaists dažādos kontekstos, dažādiem uzdevumiem, un tas rada iespēju, ka var rasties vairākas (nejaukas) smalkas neveiksmes. Šī jaunā SuperSU beta versija 2.27 ir paredzēta entuziastiem un citiem tehniķiem, ar kuriem var spēlēt, lai uzzinātu, kas sabojājas. Satur pirkstus — nav nekādu negaidītu šovu apturēšanas kļūdu, un tas ir dzīvotspējīgs ceļš uz priekšu.

Ņemiet vērā — pat ja šī beta versija darbojas un Zygote ir vēlamais veids, kā iegūt root piekļuvi, turpmāk viss process ir tikai vienas rindiņas izmaiņas. Google tos neizjauc, kas padarītu lāpītu kodola ramdiskus par nākotni Android saknes piekļuvei (tādējādi izslēdzot saknes iespēju bootloader bloķētām ierīces). Patiešām, kā brīdinājumu, jaunais process var pat nedarboties ar pilnībā atjauninātu AOSP būvējumu dažu diezgan lielu SELinux dēļ. izmaiņas pēdējo mēnešu laikā, kas netika iekļautas mazumtirdzniecības ierīcēs, bet kuras, bez šaubām, būs arī nākotnē izlaidumi. Tomēr agrāk vai vēlāk šķiet, ka saknei būs nepieciešami modificēti kodola ramdiski, taču šī jaunā beta versija var piedāvāt īsu izpildes pārtraukumu, pirms mums jādodas šajā virzienā.

Pārbaudiet izlaiduma piezīmes lai iegūtu papildinformāciju par riskiem, kas saistīti ar šīs pārbaudes testēšanu, un saites. Izstrādātājiem arī jāņem vērā, ka Chainfire pašlaik smagi strādā pie Rokasgrāmata "How-To SU". (pilnībā atjaunināts operētājsistēmai Android 5.0), kurai vajadzētu būt pieejamai tuvāko dienu laikā.

[Milzīgs paldies Chainfire par viņa darbu šeit un palīdzību šī raksta sagatavošanā.]