SuperSU BETA: Root Android Lollipop auf Stock Kernel

Bis jetzt mussten Sie einen modifizierten Kernel auf Ihr Gerät flashen, um einige SELinux-Einschränkungen zu umgehen, wenn Sie root auf Android 5.0 werden wollten. Senior Recognized Developer Chainfire hat kürzlich das zuvor erforderliche CF-Auto-Root-Paket veröffentlicht, mit dem die erforderlichen Änderungen an der Kernel-RAM-Disk vorgenommen wurden, um die SELinux-Einschränkung aus dem Skript install-recovery.sh unter AOSP zu entfernen. Heute Morgen brachte Chainfire jedoch ein Lächeln auf die Lippen, als er auf Twitter ankündigte, dass dies in Zukunft nicht mehr notwendig sei.

Bis heute hatte Chainfire geplant, ein automatisiertes ZIP-basiertes Patching-Tool zu veröffentlichen, mit dem Kernel-Images aus der TWRP-Wiederherstellung heraus automatisch gepatcht werden können, bis er auf eine geeignete Methode stieß, um die Notwendigkeit hierfür zu beseitigen.

Diese Enthüllung bedeutet, dass Benutzer von Android 5.0 keinen modifizierten Kernel mehr ausführen müssen, um über SuperSU (oder andere Root-Lösungen) Root-Zugriff zu erhalten. Auf Nexus-Geräten mit freischaltbaren Bootloadern ist dies kein großes Problem. Viele Benutzer von Geräten mit Bootloader-Sperre, für die keine Freischaltung verfügbar ist (ja, sie existieren leider), mussten jedoch Änderungen an der RAM-Disk vornehmen. Die Antwort auf ihre Gebete ist jetzt hier und wir können eine exklusive Erklärung für die notwendigen Änderungen geben. Zumindest für den Moment (bis / bis Google diesen Patch erstellt) ist es möglich, Root-Zugriff zu erlangen und SuperSU dann auf einem Standard-Android 5.0-Gerät zu installieren und zu verwenden, ohne dass Änderungen an der Kernel-Ramdisk vorgenommen werden müssen. Der Grund dafür ist, dass SuperSU einen Dienst als Root ausführen muss, um einen uneingeschränkten Root-Zugriff auf SELinux-geschützten Geräten zu ermöglichen.

Bisher nutzte SuperSU den vorinstallierten Dienst AOSP flash_recovery (der in AOSP zum Aktualisieren der Wiederherstellung nach einer OTA-Installation verwendet wurde), um den SuperSU-Dämon zu starten (der tatsächlich die Root-Berechtigungen für Apps bereitstellt, die dies anfordern). Mit der Veröffentlichung von Lollipop wurde dieser Dienst einem eingeschränkten SELinux-Kontext hinzugefügt, sodass kein unverfälschter Zugriff mehr auf das System besteht. Mit den vorherigen Kernelmodifikationen wurde versucht, die SELinux-Einschränkungen aus diesem Skript zu entfernen.

Chainfires neueste Beta-Version von SuperSU behebt dieses Problem mithilfe des Kerndienstes 'Zygote' (der für den Start aller Java-Dienste und damit aller auf einem Gerät installierten Apps verantwortlich ist). Da Zygote einer der wenigen verfügbaren Dienste auf Android L ist, der als Root im uneingeschränkten SELinux-Kontext "init" gestartet wird, ist es ein vorrangiges Ziel für den Betrieb von SuperSU. Nach dem Start des Zygote-Dienstes wird der SELinux-Kontext "init" in den endgültigen (eingeschränkten) "Zygote" -Kontext überführt. Chainfire hat es geschafft, die Zygote-Dateien erfolgreich zu modifizieren, um Code als Root-Benutzer im uneingeschränkten "init" -Kontext auszuführen und so SuperSU ohne Änderungen am Kernel wieder auf Android L zu bringen.

Dies ist nicht das erste Mal, dass Chainfire sich an Zygote wendet, um diese Probleme zu lösen. Die frühere Beta-Version 2.23 verwendete Zygote als Mittel, um möglicherweise einige andere SELinux-Probleme zu umgehen (die dazu führten, dass Root-Apps auf Android L abstürzten). Dies ermöglichte es einigen (aber nicht allen) nicht funktionierenden Apps, zu funktionieren - für den Rest sind einige Updates von ihren Entwicklern erforderlich. Leider stellte sich bei der Abfrage des 5.0 AOSP-Codes heraus, dass Google diese Methode zur Übernahme des Zygote-Dienstes bereits gebrochen hatte. Angesichts all seiner früheren Versuche, Zygote zu übernehmen, ist dies ein vielversprechender Schritt nach vorne.

Chainfire war es ein Anliegen, darauf hinzuweisen, dass SuperSU seit langem SELinux-Richtlinien auf einem laufenden System ändern kann (und warnt, mit welcher Leichtigkeit ein OEM dies deaktivieren und einen sinnvollen und einfachen Root-Zugriff wirklich verhindern kann) und wie Änderungen vorgenommen werden zu Zygote muss sorgfältig ausgeführt werden, da der Dienst aus verschiedenen Kontexten für verschiedene Aufgaben ausgeführt wird, und dies erhöht die Möglichkeit einer Reihe von (fiesen) subtilen Fehlern. Diese neue SuperSU Beta 2.27 ist ein Build, mit dem Enthusiasten und andere Technikfreaks spielen können, um herauszufinden, was kaputt geht. Daumen drücken - es gibt keine unerwarteten Show-Stopper-Bugs, und dies ist ein praktikabler Weg nach vorne.

Beachten Sie: Auch wenn diese Betaversion erfolgreich ist und Zygote der bevorzugte Weg ist, um Root-Zugriff zu erlangen, ist der gesamte Prozess nur eine Änderung in einer Zeile, da er nicht von Google unterbrochen wird und gepatchte Kernel-RAM-Disks die Zukunft für Root bedeuten Zugriff auf Android (wodurch Root für mit dem Bootloader gesperrte Geräte ausgeschlossen wird). Als Heads-up funktioniert der neue Prozess möglicherweise nicht einmal auf einem vollständig aktuellen AOSP-Build, da in den letzten Monaten einige recht große SELinux-Änderungen vorgenommen wurden, die nicht in den Einzelhandelsgeräten enthalten waren, die aber vorhanden waren wird ohne Zweifel in zukünftigen Releases dabei sein. Früher oder später ist es wahrscheinlich, dass modifizierte Kernel-RAM-Disks für root erforderlich sein werden, aber diese neue Beta bietet möglicherweise eine kurze Ausführungspause, bevor wir in diese Richtung gehen müssen.

Weitere Informationen zu den mit dem Testen verbundenen Risiken sowie Links finden Sie in den Versionshinweisen. Die Entwickler sollten sich auch darüber im Klaren sein, dass Chainfire derzeit intensiv an der Anleitung „How-To SU“ (für Android 5.0 vollständig aktualisiert) arbeitet, die in den nächsten Tagen verfügbar sein sollte.

[Ein großes Dankeschön an Chainfire für seine Arbeit hier und die Unterstützung bei der Vorbereitung dieses Artikels.]