Magisk ora supporta Google Pixel 3 e Pixel 3a su Android Q

Lo sviluppatore di Magisk ha fatto due grandi scoperte: il supporto per il sistema come root e le partizioni logiche per Google Pixel 3 e Pixel 3a su Android Q.

Google ha rilasciato la prima beta di Android Q a marzo e ha consentito rapidamente l'accesso root tramite Magisk si è reso disponibile per Google Pixel e Google Pixel 2. Il Google Pixel 3, però, non ha potuto essere rootato su Android Q perché lo sviluppatore di Magisk, XDA Recognized Developer topjohnwu, necessario per capire come lavorare con il nuovo layout delle partizioni logiche. Con il suo nuovo stage presso Apple, topjohnwu ha avuto meno tempo per lavorare su Magisk, ma ciò non gli ha impedito di fare due grandi scoperte nello sviluppo. Nell'ultima versione di Canary, Magisk ora supporta system-as-root, rendendo più difficile per le app rilevare root accesso e supporta anche dispositivi con partizioni logiche come le serie Pixel 3 e Pixel 3a XL attive Android Q.

Forum di Google Pixel 3Forum di Google Pixel 3 XL

Forum di Google Pixel 3aForum di Google Pixel 3a XL

Supporto della partizione logica di Google Pixel 3 e Pixel 3a su Android Q

Per aiutare gli sviluppatori a testare le versioni AOSP di Android sui dispositivi esistenti, Google rilascia Generic System Images (GSI) che possono essere avviate su dispositivi compatibili con Project Treble (qualsiasi dispositivo che lanciato con Android 9 Pie o versioni successive.) L'installazione di un GSI richiede lo sblocco del bootloader, che potrebbe non essere possibile su tutti i dispositivi, e il flashing di un'immagine di sistema tramite avvio rapido dopo aver cancellato l'utente dati. In Android Q, Google sta introducendo una nuova funzionalità chiamata Aggiornamenti dinamici del sistema che consente agli sviluppatori di avviare un GSI senza sbloccare il bootloader o cancellare i dati. Per supportare gli aggiornamenti dinamici del sistema, un dispositivo deve disporre di partizioni logiche che possono essere ridimensionate dinamicamente per fare spazio per l'installazione GSI. Google Pixel 3, Google Pixel 3 XL, Google Pixel 3a e Google Pixel 3a XL hanno partizioni logiche sulle beta di Android Q, sebbene solo Pixel 3 e Pixel 3 XL supportino DSU. Tuttavia, è a causa di questo cambiamento radicale nella struttura delle partizioni che Magisk non funzionava.

Una volta determinato topjohnwu, nulla gli impedisce di ottenere l'accesso come root. Proprio l'altro giorno, ha annunciato di aver effettuato con successo il root del suo Pixel 3 XL su Android Q beta 4. La descrizione del suo impegno Qui spiega i dettagli tecnici di come ha ottenuto il supporto della partizione logica, ma ciò che è importante è che Magisk ora può essere installato su dispositivi con o senza partizioni logiche.

Supporto System-as-Root

Per i dispositivi con Doppie partizioni A/B, la partizione di sistema viene montata come directory root (/), ma i dispositivi senza doppia partizione A/B hanno la partizione di sistema montata su /system. Ciò rende impossibili gli OTA solo di sistema su dispositivi non A/B poiché i file nel ramdisk, che necessitano di aggiornamento, si trovano nella partizione di avvio. Ecco perché, per rendere possibili OTA solo per il sistema in Android Pie e versioni successive, Google impone che tutti i dispositivi avviati con Android Pie supportino il layout della partizione system-as-root. Nel layout system-as-root, l'immagine ramdisk viene unita all'immagine di sistema, che viene montata come rootfs.

Da quando Google ha introdotto system-as-root, il file soluzione per eseguire il root dei dispositivi consisteva nel ripristinare il sistema come root al vecchio layout della partizione "initramfs rootfs". Quello lavori va bene per Android 7.1 su Android 9 Pie poiché Android ha il supporto legacy per questo vecchio layout, ma Android Q completamente rimuove il supporto come system-as-root è ora obbligatorio per tutti i dispositivi, anche per quelli che si stanno aggiornando ad Android Q. Le versioni precedenti di Magisk funzionavano ancora grazie ad alcuni "hack davvero sgradevoli", ma topjohnwu non era soddisfatto di quella soluzione, quindi per supportare correttamente il sistema come root ha dovuto introdotto "MagiskInit."

Un bell'effetto collaterale del supportare adeguatamente il layout della partizione system-as-root è questo una potenziale strada del rilevamento delle radici è stato schiacciato. Come mi ha gentilmente spiegato topjohnwu, il vecchio metodo "ripristina initramfs rootfs" era facile da rilevare per le app perché Magisk si montava system a '/system_root' e associare mount '/system_root/system' a '/system.' Tutto ciò che un'app dovrebbe fare per rilevare la presenza di root è controlla se "/system_root" esiste o se "/" è "rootfs". Tuttavia, non è chiaro se qualche app ne abbia effettivamente approfittato per rilevare radice. Tuttavia, è meglio prevenire che curare.

Modifiche varie

Android Q introduce il supporto per qualcosa chiamato "piscina di blastula" al ciclo di vita dell'applicazione Android. MagiskHide lo era incapace per rilevare le app da cui nascondere l'accesso root se la nuova funzionalità "pool di processi" era abilitata. L'ultima versione di Canary ora supporta questa funzionalità. Secondo topjohnwu: "Per supportare adeguatamente la nuova ottimizzazione del pool di blastula introdotta in Q, ho riscritto una buona parte della logica di ptracing per il monitoraggio dei processi."


Se hai un Pixel 3, Pixel 3 XL, Pixel 3a o Pixel 3a XL su Android Q beta, prova l'ultima versione di Magisk Canary e facci sapere se riesci a eseguire il root del tuo dispositivo.

Magisk Canary Channel