De Magisk-ontwikkelaar heeft twee grote doorbraken gerealiseerd: ondersteuning voor system-as-root en logische partities voor de Google Pixel 3 en Pixel 3a op Android Q.
Google bracht in maart de eerste Android Q-bèta uit en root-toegang via Magisk snel beschikbaar kwam voor de Google Pixel en Google Pixel 2. De Google Pixel 3 kon echter niet op Android Q worden geroot omdat de ontwikkelaar van Magisk, XDA Recognized Developer topjohnwu, moest uitzoeken hoe te werken met de nieuwe indeling van de logische partities. Met zijn nieuwe stage bij Apple heeft topjohnwu minder tijd gehad om aan Magisk te werken, maar dat weerhoudt hem er niet van om twee grote doorbraken in de ontwikkeling te boeken. In de nieuwste Canary-release ondersteunt Magisk nu systeem-als-root, waardoor het voor apps moeilijker wordt om root te detecteren toegang, en ondersteunt ook apparaten met logische partities zoals de Pixel 3- en Pixel 3a XL-serie ingeschakeld Android Q.
Google Pixel 3-forumsGoogle Pixel 3 XL-forums
Google Pixel 3a-forumsGoogle Pixel 3a XL-forums
Ondersteuning voor logische partities voor Google Pixel 3 en Pixel 3a op Android Q
Om ontwikkelaars te helpen AOSP-versies van Android op bestaande apparaten te testen, brengt Google Generic System Images (GSI's) uit die kunnen worden opgestart op Project Treble-compatibele apparaten (elk apparaat dat gelanceerd met Android 9 Pie of hoger.) Het installeren van een GSI vereist het ontgrendelen van de bootloader, wat mogelijk niet op alle apparaten mogelijk is, en het flashen van een systeemimage via fastboot na het wissen van de gebruiker gegevens. In Android Q introduceert Google een nieuwe functie genaamd Dynamische systeemupdates waarmee ontwikkelaars een GSI kunnen opstarten zonder de bootloader te ontgrendelen of gegevens te wissen. Om dynamische systeemupdates te ondersteunen, moet een apparaat logische partities hebben waarvan de grootte dynamisch kan worden aangepast om ruimte te maken voor de GSI-installatie. De Google Pixel 3, Google Pixel 3 XL, Google Pixel 3a en Google Pixel 3a XL hebben logische partities op de Android Q-bèta's, hoewel alleen de Pixel 3 en Pixel 3 XL DSU ondersteunen. Niettemin is het vanwege deze radicale verandering in de partitiestructuur dat Magisk niet werkte.
Wanneer topjohnwu vastbesloten is, houdt niets hem tegen om root-toegang te verkrijgen. Onlangs maakte hij bekend dat hij zijn Pixel 3 XL met succes had geroot op Android Q bèta 4. Zijn commitbeschrijving hier legt de technische details uit van hoe hij ondersteuning voor logische partities kreeg, maar wat belangrijk is is dat Magisk nu kan worden geïnstalleerd op apparaten met of zonder logische partities.
Systeem-als-root-ondersteuning
Voor apparaten met Dubbele A/B-partities, wordt de systeempartitie aangekoppeld als de hoofdmap (/), maar bij apparaten zonder dubbele A/B-partities is de systeempartitie aangekoppeld in /system. Dit maakt systeem-only OTA's onmogelijk op niet-A/B-apparaten, omdat bestanden op de ramdisk, die moeten worden bijgewerkt, zich op de opstartpartitie bevinden. Dat is de reden waarom Google, om systeem-only OTA's mogelijk te maken in Android Pie en hoger, verplicht dat alle apparaten die starten met Android Pie de systeem-als-root partitie-indeling ondersteunen. In de systeem-als-root-indeling wordt de ramdisk-image samengevoegd met de systeemimage, die als rootfs wordt aangekoppeld.
Sinds Google systeem-als-root introduceerde, is de oplossing naar apparaten rooten was het terugzetten van systeem-als-root naar de oude partitie "initramfs rootfs"-indeling. Dat werken prima voor Android 7.1 tot Android 9 Pie aangezien Android legacy-ondersteuning heeft voor deze oude lay-out, maar Android Q volledig verwijdert ondersteuning als systeem-als-root is nu verplicht voor alle apparaten, zelfs voor apparaten die worden bijgewerkt naar Android Q. Eerdere versies van Magisk werkten nog steeds dankzij enkele "erg vervelende hacks", maar topjohnwu was niet tevreden met die oplossing, dus om systeem-als-root goed te ondersteunen heeft hij geïntroduceerd "MagiskInit."
Een mooi neveneffect van het goed ondersteunen van de systeem-als-root-partitie-indeling is dat één mogelijke weg van worteldetectie is verpletterd. Zoals topjohnwu mij vriendelijk uitlegde, was de oude methode "terug naar initramfs rootfs" gemakkelijk te detecteren door apps omdat Magisk zou mounten system aan '/system_root' en koppel mount '/system_root/system' aan '/system.' Het enige dat een app hoeft te doen om de aanwezigheid van root te detecteren, is controleer of '/system_root' bestaat of dat '/' 'rootfs' is. Het is echter niet duidelijk of apps daadwerkelijk hiervan hebben geprofiteerd om deze te detecteren wortel. Toch is het beter safe than sorry.
Diverse veranderingen
Android Q introduceert ondersteuning voor iets dat de 'blastula-zwembad" voor de levenscyclus van Android-applicaties. MagiskHide was niet in staat om apps te detecteren waarvoor roottoegang wordt verborgen als de nieuwe "procespool" -functie is ingeschakeld. De nieuwste Canary-release ondersteunt deze functie nu. Volgens topjohnwu: "Om de nieuwe optimalisatie van de blastulapool, geïntroduceerd in Q, goed te ondersteunen, had ik een groot deel van de ptracing-logica voor procesmonitoring herschreven."
Als je een Pixel 3, Pixel 3 XL, Pixel 3a of Pixel 3a XL op de Android Q-bèta hebt, probeer dan de nieuwste Magisk Canary-release en laat ons weten of het je lukt om je apparaat te rooten.
Magisk Canarische Kanaal