Ci sono alcune parti del processo:
-
Sblocco o bypass di qualsiasi protezione del bootloader, consentendo la scrittura della partizione di sistema
-
Installazione dei binari rilevanti per acquisire root.
Entrambe queste fasi possono variare da telefono a telefono, ma ecco alcuni esempi:
Sblocco del bootloader
Su molti telefoni OEM, questo comporta tradizionalmente lo sfruttamento di una vulnerabilità in una parte del sistema per riscrivere determinate partizioni. A volte significa eseguire il flashing di un nuovo bootloader, un nuovo ripristino (questo sta diventando comune) o l'avvio temporaneo da un'immagine tramite USB, al fine di ottenere l'accesso di ripristino alla parte di sistema.
Sulla gamma Nexus di telefoni, e i telefoni di sviluppo che sono stati rilasciati da Google, è semplice come eseguire "fastboot oem unlock", anche se questo cancellerà il telefono. Inoltre, cedendo alle pressioni della comunità di sviluppo, molti produttori offrono ora un percorso ufficiale per sbloccare il bootloader.
Installazione dei binari di root.
Una volta che la partizione di sistema è stata craccata, il resto è abbastanza semplice. Fondamentalmente significa installare il binario "su" (questo si intensifica alle autorizzazioni di super utente) e un apk che fornisce un front-end Android a "su" e richiede all'utente quando un'app richiede l'autorizzazione di root.
Esistono diversi approcci a questa seconda fase. Il più comune è stato quello di utilizzare una ROM pre-root fornita dalla comunità. C'è spesso una scelta, dalla ROM di serie fornita dal produttore e poi armeggiata per aggiungere i binari, fino a un'intera gamma di ROM AOSP (Android Open Source Project), come CyanogenMod (una a cui contribuisco).
Esistono altri metodi. Ad esempio, alcuni telefoni (ad esempio Galaxy Nexus) possono utilizzare un bootloader "superboot", che armeggia con la ROM esistente come bardo del processo di avvio. Viene visualizzato sul tuo telefono utilizzando il programma fastboot.
In genere ci sarà un unico approccio preferito per ogni telefono in particolare.