SuperSU BETA: Root Android Lollipop på Stock Kernel

click fraud protection

Breaking: Chainfire har idag tillkännagett SuperSU Beta 2.27, vilket tar bort behovet av kernel ramdisk-modifieringar för att använda root-åtkomst på Android 5.0

Fram till nu, om du ville få root på Android 5.0, behövde du flasha en modifierad kärna på din enhet för att kringgå vissa SELinux-begränsningar. XDA Senior Recognized Developer Kedjeeld nyligen släppt det tidigare nödvändiga CF-Auto-Root paketet, som gjorde de nödvändiga ramdisk-kärnmodifieringarna för att ta bort SELinux-begränsningen från install-recovery.sh-skriptet på AOSP. I morse väckte Chainfire dock leenden på många ansikten, som han meddelade på Twitter att detta inte längre skulle behövas framöver.

Fram till idag hade Chainfire planerat att släppa ett automatiserat ZIP-baserat lappningsverktyg, för att automatiskt korrigera kärnavbildningar inifrån TWRP-återställning, tills han hittade en lämplig metod för att ta bort behovet av detta.

Denna avslöjande innebär att Android 5.0-användare inte längre behöver köra en modifierad kärna för att få root-åtkomst via SuperSU (eller andra rotlösningar). Även om det inte är ett stort problem på Nexus-enheter med upplåsbara starthanterare, var behovet av ramdisk-modifieringar berör för många användare av bootloader-låsta enheter för vilka ingen upplåsning är tillgänglig (ja, det gör de tyvärr existera). Svaret på deras böner är nu här, och vi kan presentera en exklusiv förklaring av de förändringar som behövs. Åtminstone för nu (tills/om inte Google korrigerar detta), är det möjligt att få root-åtkomst och sedan installera och använda SuperSU på en standard Android 5.0-enhet, utan någon kärn-ramdisk-justering. Anledningen till detta är behovet för SuperSU att köra en tjänst som root, för att möjliggöra obegränsad rootåtkomst på SELinux-skyddade enheter.

Tidigare skulle SuperSU utnyttja den förinstallerade AOSP flash_recovery tjänst (används i AOSP för att uppdatera återställning efter en OTA-installation) för att starta SuperSU-demonen (som faktiskt ger root-privilegier för appar som begär det). Med lanseringen av Lollipop har den här tjänsten lagts till i ett begränsat SELinux-kontext, vilket innebär att den inte längre har oförfalskad åtkomst till systemet. De tidigare kärnmodifieringarna försökte ta bort SELinux-begränsningarna från detta skript.

Chainfires senaste betaversion av SuperSU löser detta genom att använda kärntjänsten "Zygote" (ansvarig för att lansera alla Java-tjänster, och därmed alla appar installerade på en enhet). Eftersom Zygote är en av de enda tjänsterna som finns tillgängliga på Android L, som startas som root inom obegränsad "init" SELinux-kontext, detta gör den till ett främsta mål för användning i driften av SuperSU. Efter uppstart har Zygote-tjänsten sin SELinux "init"-kontext övergått till sin slutliga (begränsade) "Zygote"-kontext. Chainfire har lyckats modifiera Zygote-filerna för att köra kod som root-användare, inom den obegränsade "init"-kontexten, vilket förs tillbaka till Android L, utan kärna ändringar.

Det är inte första gången Chainfire vänder sig till Zygote för att lösa dessa problem; den tidigare 2.23-betan använde Zygote som ett sätt att möjligen kringgå några andra SELinux-problem (som fick root-appar att gå sönder på Android L). Detta gjorde att vissa (men inte alla) av de icke-fungerande apparna kunde fungera - resten kräver vissa uppdateringar av sina utvecklare. Tyvärr, när 5.0 AOSP-koden konsulterades, visade det sig att Google redan hade brutit mot denna metod för att ta över Zygote-tjänsten. Med tanke på att alla hans tidigare försök att ta över Zygote hade misslyckats är detta ett lovande steg framåt.

Chainfire var angelägen om att påpeka att SuperSU länge har kunnat modifiera SELinux-policyer på ett körande system (och varnar för enkelheten med vilken OEM kunde inaktivera detta och verkligen förhindra meningsfull och enkel root-åtkomst), och hur eventuella ändringar som görs i Zygote måste göras noggrant, eftersom tjänsten drivs från olika sammanhang, för olika uppgifter, och detta ökar möjligheten för ett antal (otäcka) subtila misslyckanden. Denna nya SuperSU beta 2.27 är en konstruktion för entusiaster och andra tekniker att leka med, för att ta reda på vad som går sönder. Håller tummarna – det finns inga oväntade buggar, och det här är en hållbar väg framåt.

Notera - även om den här betaversionen fungerar och Zygote är den föredragna vägen för att få root-åtkomst, är hela processen framöver bara en enradsändring bort från att brytas av Google, vilket skulle göra patchade kärn-ramdiskar till framtiden för root-åtkomst på Android (och därmed utesluta root för bootloader-låst enheter). Faktum är att som en heads-up kanske den nya processen inte ens fungerar på en helt uppdaterad AOSP-build, på grund av några ganska stora SELinux förändringar under de senaste månaderna, som inte ingick i detaljhandeln, men som utan tvekan kommer att finnas där i framtiden släpper. Förr eller senare verkar det dock troligt att modifierade kärn-ramdiskar kommer att vara nödvändiga för root, men den här nya betaversionen kan erbjuda en kort uppehållstid innan vi måste gå i den riktningen.

Kolla upp release notes för mer information om riskerna med att testa detta och för länkar. Utvecklare bör också vara medvetna om att Chainfire för närvarande arbetar hårt med "How-To SU" guide (fullständigt uppdaterad för Android 5.0), som bör vara tillgänglig inom de närmaste dagarna.

[Ett stort tack till Chainfire för hans arbete här och hjälp med att förbereda den här artikeln.]