Ο προγραμματιστής Magisk έχει κάνει δύο μεγάλες ανακαλύψεις: υποστήριξη για system-as-root και λογικά διαμερίσματα για τα Google Pixel 3 και Pixel 3a στο Android Q.
Η Google κυκλοφόρησε την πρώτη έκδοση beta του Android Q τον Μάρτιο και γρήγορη πρόσβαση root μέσω Magisk έγινε διαθέσιμη για το Google Pixel και το Google Pixel 2. Το Google Pixel 3, ωστόσο, δεν μπορούσε να γίνει root στο Android Q επειδή ο προγραμματιστής του Magisk, XDA Recognized Developer topjohnwu, απαιτείται για να καταλάβουμε πώς να εργαστείτε με τη νέα διάταξη λογικών κατατμήσεων. Με τη νέα του πρακτική άσκηση στην Apple, ο topjohnwu είχε λιγότερο χρόνο να δουλέψει στο Magisk, αλλά αυτό δεν τον εμπόδισε να έχει δύο μεγάλες ανακαλύψεις στην ανάπτυξη. Στην πιο πρόσφατη έκδοση του Canary, το Magisk υποστηρίζει πλέον σύστημα ως ρίζα, καθιστώντας πιο δύσκολο για τις εφαρμογές να ανιχνεύουν root πρόσβαση και υποστηρίζει επίσης συσκευές με λογικά διαμερίσματα όπως οι σειρές Pixel 3 και Pixel 3a XL Android Q.
Φόρουμ Google Pixel 3Φόρουμ Google Pixel 3 XL
Φόρουμ Google Pixel 3aΦόρουμ Google Pixel 3a XL
Υποστήριξη λογικού διαμερίσματος Google Pixel 3 και Pixel 3a σε Android Q
Για να βοηθήσει τους προγραμματιστές να δοκιμάσουν τις εκδόσεις AOSP του Android σε υπάρχουσες συσκευές, η Google κυκλοφορεί Generic System Images (GSIs) που μπορούν να εκκινηθούν σε συσκευές συμβατές με Project Treble (οποιαδήποτε συσκευή που κυκλοφορήσει με Android 9 Pie ή μεταγενέστερη έκδοση.) Η εγκατάσταση ενός GSI απαιτεί ξεκλείδωμα του bootloader, κάτι που μπορεί να μην είναι δυνατό σε όλες τις συσκευές, και αναβοσβήνει μια εικόνα συστήματος μέσω fastboot μετά το σκούπισμα του χρήστη δεδομένα. Στο Android Q, η Google εισάγει μια νέα δυνατότητα που ονομάζεται Δυναμικές ενημερώσεις συστήματος που επιτρέπει στους προγραμματιστές να εκκινούν ένα GSI χωρίς να ξεκλειδώσουν τον φορτωτή εκκίνησης ή να σκουπίσουν τα δεδομένα. Προκειμένου να υποστηριχθούν οι ενημερώσεις δυναμικού συστήματος, μια συσκευή πρέπει να έχει λογικά διαμερίσματα που μπορούν να αλλάξουν δυναμικά το μέγεθος για να δημιουργηθεί χώρος για την εγκατάσταση GSI. Τα Google Pixel 3, Google Pixel 3 XL, Google Pixel 3a και Google Pixel 3a XL έχουν λογικά διαμερίσματα στις εκδόσεις beta του Android Q, αν και μόνο τα Pixel 3 και Pixel 3 XL υποστηρίζουν DSU. Ωστόσο, λόγω αυτής της ριζικής αλλαγής στη δομή των διαμερισμάτων το Magisk δεν λειτουργούσε.
Όταν ο topjohnwu είναι αποφασισμένος, τίποτα δεν τον εμποδίζει να επιτύχει πρόσβαση root. Μόλις τις προάλλες, ανακοίνωσε ότι είχε ριζώσει με επιτυχία το Pixel 3 XL του στο Android Q beta 4. Η περιγραφή της δέσμευσής του εδώ εξηγεί τις τεχνικές λεπτομέρειες του τρόπου με τον οποίο πέτυχε υποστήριξη λογικών κατατμήσεων, αλλά αυτό που είναι σημαντικό είναι ότι το Magisk μπορεί πλέον να εγκατασταθεί σε συσκευές με ή χωρίς λογικά διαμερίσματα.
Υποστήριξη System-as-Root
Για συσκευές με A/B διπλά χωρίσματα, το διαμέρισμα συστήματος είναι προσαρτημένο ως ο ριζικός κατάλογος (/), αλλά οι συσκευές χωρίς διπλά διαμερίσματα A/B έχουν το διαμέρισμα συστήματος προσαρτημένο στο /system. Αυτό καθιστά αδύνατες τις OTA μόνο για το σύστημα σε συσκευές που δεν είναι A/B, επειδή τα αρχεία στο ramdisk, τα οποία χρειάζονται ενημέρωση, βρίσκονται στο διαμέρισμα εκκίνησης. Αυτός είναι ο λόγος για τον οποίο, προκειμένου να γίνουν δυνατές οι OTA μόνο για το σύστημα στο Android Pie και νεότερες εκδόσεις, η Google ορίζει ότι όλες οι συσκευές που ξεκινούν με Android Pie υποστηρίζουν τη διάταξη διαμερίσματος system-as-root. Στη διάταξη system-as-root, η εικόνα ramdisk συγχωνεύεται στην εικόνα συστήματος, η οποία είναι προσαρτημένη ως rootfs.
Από τότε που η Google εισήγαγε το system-as-root, το λύση στις συσκευές root ήταν η επαναφορά του συστήματος ως ρίζας στην παλιά διάταξη του διαμερίσματος "initramfs rootfs". Οτι έργα πρόστιμο για Android 7.1 έως Android 9 Pie, καθώς το Android έχει υποστήριξη παλαιού τύπου για αυτήν την παλιά διάταξη, αλλά το Android Q εντελώς αφαιρεί Η υποστήριξη ως system-as-root είναι πλέον υποχρεωτική για όλες τις συσκευές, ακόμη και για εκείνες τις συσκευές που ενημερώνονται σε Android Q. Οι προηγούμενες εκδόσεις του Magisk εξακολουθούσαν να λειτουργούν χάρη σε μερικά "πραγματικά άσχημα hacks", αλλά ο topjohnwu δεν ήταν ικανοποιημένος με αυτή τη λύση, έτσι ώστε να υποστηρίξει σωστά το system-as-root που έχει εισήχθη "MagiskInit."
Μια ωραία παρενέργεια της σωστής υποστήριξης της διάταξης διαμερίσματος system-as-root είναι αυτή μια πιθανή λεωφόρο της ανίχνευσης ρίζας έχει στριμωχτεί. Όπως μου εξήγησε ευγενικά ο topjohnwu, η παλιά μέθοδος "revert to initramfs rootfs" ήταν εύκολο να ανιχνευθεί από τις εφαρμογές, επειδή το Magisk προσαρτούσε σύστημα σε '/system_root' και δέσμευση προσάρτησης '/system_root/system' σε '/system.' Το μόνο που χρειάζεται να κάνει μια εφαρμογή για να ανιχνεύσει την παρουσία root είναι ελέγξτε αν υπάρχει το '/system_root' ή εάν το '/' είναι 'rootfs'. Ωστόσο, δεν είναι σαφές ότι κάποια εφαρμογή εκμεταλλεύτηκε πραγματικά αυτό για τον εντοπισμό ρίζα. Ωστόσο, είναι καλύτερα ασφαλές παρά συγγνώμη.
Διάφορες Αλλαγές
Το Android Q εισάγει υποστήριξη για κάτι που ονομάζεται "πισίνα blastula" στον κύκλο ζωής της εφαρμογής Android. Το MagiskHide ήταν ανίκανος για τον εντοπισμό εφαρμογών για απόκρυψη της πρόσβασης root, εάν ήταν ενεργοποιημένη η νέα δυνατότητα "ομάδα διεργασιών". Η πιο πρόσφατη έκδοση Canary υποστηρίζει τώρα αυτήν τη δυνατότητα. Σύμφωνα με το topjohnwu: "Για να υποστηρίξω σωστά τη νέα βελτιστοποίηση blastula pool που εισήχθη στο Q, είχα ξαναγράψει ένα καλό κομμάτι της λογικής ptracing για την παρακολούθηση της διαδικασίας."
Εάν έχετε Pixel 3, Pixel 3 XL, Pixel 3a ή Pixel 3a XL στην έκδοση beta του Android Q, δοκιμάστε την πιο πρόσφατη έκδοση Magisk Canary και ενημερώστε μας εάν καταφέρετε να κάνετε root τη συσκευή σας.
Magisk Canary Channel