Permessi di root
Applicazioni per KaiOS e come modificare le partizioni
Applicazioni per KaiOS e come modificare le partizioni
Avere i permessi di root su un dispositivo KaiOS o Android significa poter accedere a tutte quelle funzioni a cui solo i produttori del dispositivo possono accedere tramite la riga di comando, e quindi ADB . Questi privilegi dipendono dai file binari presenti all'interno di più partizioni. Avere accesso ad almeno uno di questi significa davvero molto. È possibile ottenere root come predefinito nel firmware (partizione di avvio) o eseguire backup e ripristini in caso di danneggiamento (Recovery), oppure ottenere entrambe queste possibilità partendo dallo spazio utente (utilizzando applicazioni).
Serviti dell'indice per navigare più facilmente in questa pagina:
Per eseguire l'accesso come root su un dispositivo Linux Embedded come Android, siamo spesso costretti a utilizzare patch nelle partizioni, per aggiungere " busybox " a /system/bin o per modificare i permessi direttamente nella partizione /boot .
In KaiOS è molto più semplice, in quanto esistono applicazioni scritte in Javascript, HTML e CSS che sfruttano estensioni già esistenti nel sistema, in modo da non interrompere gli aggiornamenti. Queste app possono essere facilmente installate utilizzando WebIDE o OmniSD .
In questa pagina cercherò di spiegare il funzionamento delle singole app, concentrando maggiormente l'attenzione sul progetto Wallace, che contiene una vera e propria libreria per l'implementazione dei privilegi di root e non solo.
Verranno elencate in ordine cronologico tutte le applicazioni presenti nelle nostre risorse, a partire dalla meno potente (Telnetd) fino alla più completa (Wallace Toolbox).
Leggi attentamente le loro caratteristiche, in modo da poter scegliere l'applicazione giusta per il tuo dispositivo KaiOS. In effetti, è molto probabile che alcune funzionalità o addirittura l'intera applicazione potrebbero non funzionare, per motivi che vanno dalle funzionalità software all'hardware.
NOTA: installarli non è rischioso per il dispositivo, ma l'uso che si può fare accidentalmente può essere rischioso. È tua completa responsabilità conoscere queste app e come usarle, a tuo rischio e pericolo!
Telnetd è stato rilasciato da Speeduploop il 4 maggio 2019 ed è stata la prima app di root per Nokia 8110 4G. Basta avviare l'app e il tasto Select / Enter attiverà / disattiverà il server telnet:
da PC il comando telnet 192.168.1.125 (ad esempio basta usare l'IP mostrato a display) ti collegherà al tuo telefono;
l'utilizzo della shell adb richiede quindi il comando busybox telnet localhost , ed è più veloce perché utilizza USB anziché WLAN.
NOTA: la maggior parte delle guide su questo sito sono state compilate sul presupposto che si utilizzi questo tipo di connessione. Usando un'app di root diversa non è necessario scrivere " busybox " ogni volta o " busybox telnet localhost " dopo il comando della shell adb , e dove è necessario scrivere semplicemente " exit " una volta.
ADBroot è stato rilasciato da Speeduploop il 24 maggio 2019. È l'applicazione root più potente per i telefoni Nokia. Ha la stessa funzione delcomando"adb root" che solitamente troviamo in Android.
Per implementare l'accesso ROOT fino al successivo riavvio è sufficiente fare clic sul pulsante ABILITA. Per disabilitare l'accesso root, premere DISABILITA. Il suo potere deriva dall'implementazione del proprio file binario adbd.
Come Telnetd, inizialmente è stato progettato per funzionare su Nokia 8110 4G. Sebbene queste due applicazioni sembrino essere simili, come possiamo vedere, agiscono in modo diverso per svolgere la stessa funzione. Questa idea di implementare importanti file binari direttamente all'interno dell'applicazione è servita a ispirare ulteriori versioni che potrebbero funzionare su dispositivi KaiOS diversi da Nokia.
Wallace di Luxferre è un'app di rooting in stile noir che prende il nome da " Niander Wallace " dal film " Blade Runner 2049 " del 2017. Premi semplicemente il tasto D-pad centrale e attendi fino a quando la silhouette di Niander Wallace non appare completamente. Quindi la shell ADB viene rootata fino al prossimo riavvio.
C'è anche una funzione "segreta" di ripristino delle impostazioni di fabbrica privilegiate (con richiesta di conferma, ovviamente) se si preme # invece del tasto centrale.
Wallace ha il potenziale per lavorare sui telefoni senza busybox, poiché porta il proprio binario di decompressione e utilizza la propria funzione di caricamento delle risorse. Quindi, nonostante il rooting, questo è anche un banco di prova per l'escape sandbox (almeno per un'app con autorizzazione "certificata"):
Basta premere il tasto D-pad centrale e attendere che la sagoma di Niander Wallace venga fuori completamente. Quindi la tua shell ADB è radicata fino al prossimo riavvio.
C'è anche una funzione "segreta" di ripristino delle impostazioni di fabbrica privilegiato (con richiesta di conferma, ovviamente) se si preme # invece del tasto centrale.
Il flusso generale è il seguente:
La prima estensione master di fitting viene selezionata in base alla piattaforma (la scelta viene effettuata tra engmodeExtension, jrdExtension e kaiosExtension);
Il metodo del caricatore di risorse (vedi sotto) viene chiamato per recuperare il binario "unzip" dalle risorse dell'app in /data/local/tmp/unzip;
Con l'aiuto del metodo startUniversalCommand dell'estensione principale selezionata, viene eseguito un comando concatenato per:
interrompere il servizio adbd;
sposta il binario unzip da /data/local/tmp/unzip a /sbin/unzip e regola i suoi permessi (dato che la struttura /sbin è volatile fino al prossimo riavvio);
eseguire il comando unzip sul pacchetto dell'applicazione locale per estrarre il binario adbd in / sbin;
regolare i nuovi permessi / sbin / adbd e riavviare il servizio adbd;
rimuovere la cartella rimanente dalla memoria principale se è vuota.
La parte più interessante di questa app è il " caricatore di risorse ", che utilizza il fatto che la memoria principale [usata dal metodo dell'API B2G navigator.getDeviceStorage ("sdcard")] può sempre essere indicata come / storage / self / primary / nell'attuale albero FS. L'unico problema è che in alcuni casi (ad esempio, su 8110 v16 senza scheda SD) l'archiviazione effettiva è montata su / storage / self / primary / 0 ma, a causa di alcuni bug, la radice dell'handle di archiviazione "sdcard" di B2G fa ancora riferimento in / storage / self / primary / stesso, quindi tenta di scrivere nel risultato della radice con un errore DOM. Quindi, la logica del metodo loader è la seguente:
Modellare l'XHR con il tipo di contenuto "application / octet-stream" e il tipo di risposta "blob" per recuperare il file di risorse necessario. In caso di successo, andare al passaggio successivo, in caso contrario, restituire l'errore di operazione.
Recupera l'handle di archiviazione con navigator.getDeviceStorage ("sdcard") e prova a scrivere il blob risultante nel file 0 / tmpbin.bin (relativo alla radice di archiviazione B2G, non alla posizione fisica). In caso di successo, andare al passaggio successivo, altrimenti restituire l'errore di operazione.
Con l'aiuto del metodo startUniversalCommand dell'estensione principale selezionata, esegui il comando per spostare il file (trovato con il comando find all'interno di / storage / self / primary / tree, perché la sua posizione potrebbe essere /storage/self/primary/tmpbin.bin o /storage/self/primary/0/tmpbin.bin) nella posizione di destinazione. Restituire l'operazione riuscita.
Wallace 0.1 è la versione standard, con la sua versione interna di busybox. La prima versione di questa applicazione root è stata testata per funzionare sia su Nokia 8110 4G (TA-1048 con firmware v16) sia su Alcatel OT-044D (con KaiOS 1.0). Ha anche il potenziale per funzionare sui telefoni senza busybox , poiché porta il proprio binario di decompressione e utilizza la propria funzione di caricamento delle risorse. Quindi, nonostante il rooting, questo è anche un banco di prova per la fuga di sandbox (almeno per un'app con autorizzazione "certificata");
In caso di problemi con Wallace 0.1 in merito alla nuova funzionalità del caricatore di risorse, esiste una versione "lite", ossia Wallace-lite : che utilizza la funzione di decompressione di busybox e funziona sui dispositivi con Busybox come Nokia e Alcatel;
Wallace Spreadtrum KitKat by Anthill un fork del Wallace originale per i telefoni basati su chipset Spreadtrum KitKat, e che aggiunge il set di comandi busybox come bonus.
La prima versione di Wallace Toolbox è stata pubblicata da Luxferre il 7 dicembre 2019. Come avrai intuito, Wallace utilizza le sue librerie interne per eseguire temporaneamente il root di un dispositivo. Tuttavia, è stato solo un primo esperimento per testare qualcosa di più ampio, che può arricchire un dispositivo con varie funzioni aggiuntive. Anche l'installazione di applicazioni di terze parti comporta l'utilizzo di estensioni e librerie sul sistema, ma come già accaduto per Jio Phone, queste estensioni possono essere perse attraverso aggiornamenti volti a garantire la totale dipendenza di un dispositivo dai servizi esclusivi degli OEM.
Wallace Toolbox è l'app più completa di sempre! Una volta avviata l'applicazione, apparirà una schermata in cui sono elencate le varie funzioni, ciascuna collegata ad un pulsante del telefono.
Possiamo considerare questa applicazione come una sorta di "patch sicura" che aggiunge alcune funzioni già presenti su GerdaOS , la prima vera custom rom del Nokia 8110 4G, ma ovviamente la sicurezza dipende sempre da come userete questa applicazione sui vostri dispositivi.
Ad ogni opzione dello schermo è associato un colore diverso, che dipende dalla pericolosità dell'operazione da eseguire e, spesso, dal tipo di dispositivo KaiOS su cui è in esecuzione Wallace Toolbox:
le opzioni BIANCO sono le più sicure da usare;
quelli ROSSI comportano modifiche che possono cancellare i dati o interrompere gli aggiornamenti;
quelli che appaiono in GRIGIO non saranno disponibili per un dispositivo specifico.
Di seguito, in dettaglio, a cosa serve ciascuna chiave in Wallace Toolbox:
Root ADB (necessita di Busybox per l'operazione, puoi usare OmniBB per installarlo se manca)
Registrazione delle chiamate on / auto / off (funziona su KaiOS 2.5.2 e versioni successive, testato su Nokia 2720 Flip e Nokia 800 Tough)
Installa il pacchetto dell'applicazione ( compatibile con OmniSD / GerdaPkg , funziona quando il menu sviluppatore è abilitato, testato solo su Nokias)
Ignora TTL durante il tethering fino al riavvio (solo dispositivi Qualcomm)
Modifica IMEI1 (solo dispositivi Nokia e MediaTek)
Modifica IMEI2 (dispositivi Nokia e MediaTek solo nella configurazione DSDS)
Attiva / disattiva il proxy del browser
Imposta host e porta proxy del browser
Ignora l'agente utente (pericoloso: influisce sull'accessibilità di KaiStore, non può essere ripristinato fino al ripristino delle impostazioni di fabbrica o alla modifica manuale delle preferenze del dispositivo in WebIDE)
0. Attiva / disattiva porta diagnostica (solo dispositivi Qualcomm)
*. Esegui script di overclock (solo dispositivi Qualcomm)
#. Abilita menu sviluppatore e accesso privilegiato (tramite il metodo di iniezione della cache )
Chiamata. Modifica indirizzo MAC Wi-Fi (solo dispositivi Nokia e MediaTek, temporaneo per MediaTeks)
Tasto funzione sinistro. Modifica indirizzo MAC Bluetooth (solo dispositivi Nokia)
Tasto funzione destro. Rendi tutte le app rimovibili (richiede Busybox).
NOTA: in molti paesi del mondo è illegale modificare l'IMEI, in questo caso usa questo strumento solo per ripararlo! Questa guida è solo a scopo didattico! Non mi assumo alcuna responsabilità in caso di smarrimento degli aggiornamenti o malfunzionamenti del tuo dispositivo!
OmniBB è stato rilasciato il 3 luglio 2020, insieme a Wallace Toolbox v0.0.3. Questa utility installa Busybox in /sbin fino al prossimo riavvio.
Oltre a tutto il resto, consente alle funzioni di rooting di Wallace Toolbox (0.0.3+) e al metodo extractAppAsset da libWallace di funzionare correttamente sui dispositivi su cui non è installato Busybox. Testato su MediaTek, necessita di test su dispositivi Unisoc / Spreadtrum.
L'emulatore di terminale per KaiOS è stato sviluppato da Affe Null e pubblicato il 28 maggio 2020 su Google Gruppi . L'app avvia un server telnet (proprio come Telnetd) in ascolto su 127.0.0.1 (localhost) e si connette ad esso con l'API mozTCPSocket. Utilizzare il tasto di chiamata come tasto di controllo, "#" per alternare minuscolo / maiuscolo, tasto funzione sinistro come scheda. Ti consente di inserire caratteri speciali e anche di modificare i colori di primo piano / sfondo predefiniti.
Il progetto è disponibile anche su githlab e può essere utilizzato insieme a OmniBB per i dispositivi che non hanno busybox.
La modalità di ripristino, o Recovery Mode è un modo per avviare un dispositivo da cui è possibile gestire varie operazioni sulla partizione di sistema da root. Quando le chiavi di test (test-keys) sono attive, l'utente ha infinite possibilità tra il flashing delle partizioni, ripristino e installazione di varie parti del sistema o, in modo più sicuro, intervento diretto sulla partizione dati dell'utente.
Per accedervi tramite ADB utilizzare il comando:
adb reboot recovery
In molti casi questa partizione è patchata dal produttore del dispositivo in modo da impedire all'utente finale di essere in grado di eseguire operazioni come il de-branding e l'installazione di software di terze parti o persino l'installazione di un nuovo sistema operativo sul dispositivo.
Il controllo di integrità della partizione è gestito nella maggior parte dei casi da un file sulla partizione di sistema che, tramite uno script, reinstalla la partizione originale al primo avvio: /system/bin/install-recovery.sh
Disabilitando il suddetto file la garanzia viene persa, ma in cambio sarai in grado di ottenere in modo permanente il tuo Recovery personalizzato.
Tuttavia è anche possibile utilizzare temporaneamente una custom Recovery, quindi ripristinarlo automaticamente al primo avvio, giusto in tempo per eseguire le operazioni necessarie all'utente. Con un recupero con dev-keys non abbiamo i permessi per eseguire file zip. Solo gli aggiornamenti firmati sono accettati su un recupero dello stock. Con un Recovery personalizzato possiamo eseguire il flashing di ogni altra zip di cui abbiamo bisogno sui nostri dispositivi o addirittura utilizzare ADB dalla custom Recovery.
Utilizzare un accesso root temporaneo (usando le applicazioni in spazio utente) sul dispositivo ed eseguire dd dalla shell ADB :
dd if=/dev/block/bootdevice/by-name/recovery of=/sdcard/recovery.img bs=2048
il file recovery.img verrà salvato sulla scheda SD.
Questa guida ti consentirà di aggiungere le chiavi di prova al recupero delle scorte. Dovrebbe funzionare anche per gli smartphone Android.
Tutto ciò di cui abbiamo bisogno è abootimg installato (su Linux dovrebbe essere già installato, altrimenti installarlo dal repository) e una chiave di test , qui quella di Nokia 8110 4G con Firmware v12. Inoltre, il supporto root ADB può anche essere implementato utilizzando un file binario rooted ADBD, ma questo è facoltativo, solo se si desidera sostituire definitivamente il Recovery:
scarica la chiave di prova (test-key)
1) Crea una nuova cartella e inserisci lì il tuo recovery.img , con il file keys.v12 ;
2) Apri un terminale nella nuova cartella ed esegui i seguenti comandi, eseguiremo l'operazione in tre blocchi :
a. in questo modo si estrae il file recovery.img e il file initrd.img interno che contiene i file essenziali
abootimg -x recovery.img
abootimg-unpack-initrd
b. con questi comandi rimuovete le chiavi di sviluppo originali in /ramdisk/res/ e le sostituite con le chiavi dal file keys.v12
rm ramdisk/res/keys
cp keys.v12 ramdisk/res/keys
Normalmente è possibile utilizzare solo il comando "sideload", ma è possibile eseguire il flashing solo dei pacchetti firmati dagli OEM. Nel caso in cui si desideri utilizzare ADB come root in modalità di ripristino, è possibile procedere in questo modo (OPZIONALE):
b1. con questi comandi si rimuove il binario ADBD di serie in /ramdisk/sbin/ e lo si sostituisce con quello nuovo
rm ramdisk/sbin/adbd
cp adbd ramdisk/sbin/adbd
b2 . ora devi modificare il file default.prop in questa cartella principale
cp ramdisk/default.prop ./
utilizzare un editor di testo e modificare i seguenti valori:
ro.debuggable deve essere 1 (in questo modo il dispositivo è in grado di utilizzare il debug);
ro.adb.secure deve essere 0 (necessario per abilitare ADB, è spesso abilitato per impostazione predefinita).
ora spingere di nuovo il file default.prop al suo posto:
rm ramdisk/default.prop
cp default.prop ramdisk/default.prop
c. con questi comandi rimuovete initrd.img dalla cartella principale, reimballate la nuova estremità e riscrivetela in recovery.img
rm initrd.img
abootimg-pack-initrd
abootimg -u recovery.img -r initrd.img
Ora il tuo recovery.img personalizzato è pronto per essere pubblicato!
In questa parte della guida seguiremo due passaggi, tutto dipende dal fatto se il ripristino personalizzato sarà in sostituzione temporanea (dal punto 1 al punto 5) o permanente (punto 6).
Sostituzione temporanea
1) Usa il tuo custom Recovery;
2) Rinominare il file come recovery.img per semplificare l'operazione;
3) Metti il file sulla sdcard;
4) Scegli un modo per ottenere una shell root temporanea (usando le app precedentemente elencate);
5) Sostituire il ripristino con i seguenti comandi :
adb shell
dd if=/dev/block/bootdevice/by-name/recovery of=/sdcard/recovery-backup.img bs=2048
dd if=/sdcard/recovery.img of=/dev/block/bootdevice/by-name/recovery
Ora il tuo recupero è temporaneamente sostituito. Se il sistema è pulito, uno script interno reinstallerà lo stock di ripristino al successivo riavvio. Nel frattempo è possibile utilizzare, ad esempio, gli strumenti di backup, come dumpall.zip , e una volta terminato, basta avviare normalmente il telefono per avviare il ripristino stock.
Ripetere i passaggi da 1 a 5 ogni volta che è necessario ricorrere temporaneamente a un ripristino personalizzato (video in inglese per questi primi 5 passaggi).
Se, tuttavia, desideri sostituire definitivamente il recupero personalizzato, vai al passaggio successivo.
Ora abbiamo fatto un backup del recovery stock e lo abbiamo sostituito con uno personalizzato. Questo passaggio è importante se si desidera utilizzare temporaneamente il nuovo ripristino senza perdere gli aggiornamenti OTA, poiché è possibile utilizzare quello personalizzato solo una volta, verrà sostituito con quello di riserva al primo avvio grazie al file/system/bin/install-recovery.sh;
6a) Ora dobbiamo disabilitare il controllo di integrità dalla partizione di sistema. Questo bloccherà gli aggiornamenti ufficiali, ma puoi sempre ripristinarlo se esegui prima il backup della partizione di sistema, in questo modo:
dd if=/dev/block/bootdevice/by-name/system of=/sdcard/system-backup.img bs=2048
6b) Ora che abbiamo il backup del sistema, possiamo disabilitare il file che reinstalla la versione stock di Recovery, /system/bin/install-recovery.sh
mount -o remount,rw /system
echo '#!/system/bin/sh' > /system/bin/install-recovery.sh
echo 'exit 0' >> /system/bin/install-recovery.sh
chown root:root /system/bin/install-recovery.sh
chmod 750 /system/bin/install-recovery.sh
sync
mount -o remount,ro /system
reboot
In questa guida spiegherò la procedura per attivare ADB ROOT su un firmware di serie su KaiOS e Android. Questa procedura comporta un doppio rischio:
La perdita di aggiornamenti ufficiali (risolvibile);
La rottura del dispositivo (spesso irreversibile).
Procedete a vostro rischio!
Nell'informatica, il firmware è una classe specifica di software che fornisce il controllo di basso livello per l'hardware specifico del dispositivo. Il firmware può fornire un ambiente operativo standardizzato per il software più complesso del dispositivo (consentendo una maggiore indipendenza dell'hardware) oppure, per i dispositivi meno complessi, fungere da sistema operativo completo del dispositivo, eseguendo tutte le funzioni di controllo, monitoraggio e manipolazione dei dati.
Il firmware è contenuto in dispositivi di memoria non volatile come ROM, EPROM o memoria flash. La modifica del firmware di un dispositivo è oggigiorno una procedura comune; alcuni dispositivi di memoria del firmware sono installati in modo permanente e non possono essere modificati dopo la produzione. Le ragioni comuni per l'aggiornamento del firmware includono la correzione di bug o l'aggiunta di funzionalità al dispositivo.
(source Wikipedia)Sostituire il firmware originale con uno personalizzato è un grande vantaggio. In caso di errori, il dispositivo può subire nel migliore dei casi un riavvio continuo, ma esiste anche il rischio di non essere più in grado di accendersi.
Se non disponi di un boot.img certificato per il tuo dispositivo KaiOS / Android su Internet, utilizzalo con la shell. Utilizzare un accesso root temporaneo (usando le applicazioni in alto, in questa guida) sul dispositivo ed eseguire dd dalla shell ADB :
dd if=/dev/block/bootdevice/by-name/boot of=/sdcard/boot.img bs=2048
il file boot.img verrà salvato sulla scheda SD.
1) Crea una nuova cartella e inserisci il tuo boot.img lì, insieme a questo file binario ADBD rooted ( dal progetto GerdaOS, ma ne puoi trovare altri su internet );
2) Aprire un terminale nella nuova cartella ed eseguire i seguenti comandi, eseguiremo l'operazione in tre blocchi (proprio come la guida precedente sul Recovery Mode, ma il blocco " b " cambia):
a. in questo modo si estrae boot.img e initrd.img interno che contiene i file essenziali
abootimg -x boot.img
abootimg-unpack-initrd
b1. con questi comandi si rimuove il binario ADBD di serie in /ramdisk/sbin/ e lo si sostituisce con quello nuovo
rm ramdisk/sbin/adbd
cp adbd ramdisk/sbin/adbd
b2 . ora devi modificare il file default.prop in questa cartella principale
cp ramdisk/default.prop ./
utilizzare un editor di testo e modificare i seguenti valori:
ro.debuggable deve essere 1 (in questo modo il dispositivo è in grado di utilizzare il debug);
ro.adb.secure deve essere 0 (necessario per abilitare ADB).
ora spingere di nuovo il file default.prop al suo posto:
rm ramdisk/default.prop
cp default.prop ramdisk/default.prop
c. con questi comandi rimuovete initrd.img dalla cartella principale, reimballate la nuova estremità e riscrivetela in boot.img
rm initrd.img
abootimg-pack-initrd
abootimg -u boot.img -r initrd.img
AVVERTIMENTO! Dovresti ricevere un errore come questo:
"boot.img: updated is too big for the Boot Image (MaxValue vs MinValue bytes)"
quindi prendi MaxValue e avvia questo ultimo comando:
abootimg -u boot.img -r initrd.img -c bootsize=MaxValue
Ora il tuo firmware personalizzato è finalmente pronto per essere scaricato!