Hvordan oppdage skjulte Fastboot-kommandoer

Det er mange skjulte fastboot-kommandoer på enheten din. For å finne dem, må vi dumpe oppstartslasteren og undersøke innholdet!

I min søken etter å finne ut så mye om Android-tilpasning som jeg kan, har jeg gjort mange obskure, men likevel interessante oppdagelser. Jeg har vist deg hvordan du får tilgang skjulte menyer på enheten din ved å se gjennom alle de skjulte applikasjonsaktivitetene på telefonen. Nylig har jeg vist deg hvordan du får tilgang til skjult maskinvarediagnoseverktøy på enkelte smarttelefoner. Nå innser jeg at noen av dere var skuffet over det faktum at smarttelefonen din ikke ble dekket i den forrige artikkelen, og jeg beklager det.

For å gjøre opp for det, skal jeg lede deg gjennom noe langt, langt mer avansert og spennende: dumpe enhetens bootloader for å oppdage skjulte fastboot-kommandoer. Denne guiden, selv om den er gjort på min Nexus 6P, er definitivt replikerbar på de fleste smarttelefoner. Hvilke kommandoer du vil ha tilgang til vil imidlertid variere betydelig mellom enheter. De fleste kommandoer vil egentlig ikke hjelpe deg i noen reell situasjon, men likevel er det ganske interessant å dykke dette dypt inn i telefonens innstillinger. La oss komme i gang.

Ansvarsfraskrivelse: Så lenge du vet hva du gjør og kan følge instruksjonene på riktig måte, bør ingenting vondt skje med enheten din. Men vi roter fortsatt med enhetspartisjonene våre og oppstartslasteren, så det er ikke noe å si hva som kan skje hvis du skriver inn feil kommando. Sørg for at du har en sikkerhetskopi utenfor enheten klar!


Forberedelse

Før vi begynner, er det en veldig, veldig viktig ting å merke seg. For å pakke ut enhetens bootloader, du trenger root-tilgang på telefonen. Hvis du ikke har root-tilgang, kan du fortsette å lese denne veiledningen for pedagogiske formål, men du vil ikke kunne utføre noen av de nødvendige kommandoene. Forstod det? Flink. En annen forutsetning du må oppfylle er å sikre at datamaskinen har alt riktige ADB/fastboot-drivere. Hvis du ikke har ADB/fastboot-binærene, anbefaler jeg å installere Minimal ADB og Fastboot fra våre forum. Når det gjelder driverne, kan du hente de nødvendige driverne for Google Nexus-enheter her og for alle andre enheter fra her. Hvordan vet du om du er god til å gå? Koble til enheten din, aktiver USB-feilsøking under utviklerinnstillinger, åpne en ledetekst og skriv:

adb devices

Hvis du ser enhetens serienummer dukker opp, har du de riktige driverne.


Dumper Bootloader

Vårt første skritt er å åpne et skall på enheten vår slik at vi kan kjøre kommandoer over ADB. Det er best at vi kjører kommandoer over ADB fordi vi er mye mer utsatt for å gjøre feil når du skriver på et virtuelt tastatur, og å gjøre feil er ikke noe du vil gjøre her. Den første kommandoen du bør kjøre i ledeteksten er:

adb shell

Hvis du ser ledeteksten endres fra å vise den binære ADB-katalogen til å vise kodenavnet for Android-enheten din, har du angitt enhetens lokale kommandolinjeskall. Nå, for å få tilgang til partisjonene vi må dumpe, trenger du superbrukertilgang. For å gjøre det, skriv inn følgende:

su

Symbolet foran enhetens kodenavn skal endres fra $ til # som indikerer at du nå kan kjøre kommandoer med forhøyede rettigheter. Vær forsiktig nå!

Deretter vil vi finne ut den nøyaktige plasseringen av enhetens bootloader-bilde. For å finne den nøyaktige katalogen, vil vi skrive ut en liste over alle partisjonene og deres kataloger etter navn, og se etter en spesielt kalt 'en støvel.' Du må angi to kommandoer som følger:

cd /dev/block/bootdevice/by-name
ls -all

Som du kan se ovenfor, skrives en gigantisk liste over partisjonskataloger ut. Disse partisjonene er sortert etter navn, slik at vi enkelt kan skjelne plasseringen til vår bootloader-partisjon. I mitt tilfelle, bootloader, som er 'en støvel' i bildet ovenfor, kan du finne på /dev/block/mmcblk0p10. Dette vil variere avhengig av enheten din, så det er viktig at du følger disse instruksjonene for å finne ut den sanne katalogen der oppstartslasteren din er plassert. Vær imidlertid oppmerksom på denne katalogen, da vi vil referere til den i følgende kommando for å dumpe oppstartslasteren:

dd if=/dev/block/{YOUR ABOOT PARTITION} of=/sdcard/aboot.img

Når vellykket, bør du finne en fil som heter 'aboot.img' plassert på roten til den interne lagringen. Nå som vi har dumpet oppstartslasteren, må vi undersøke den for å finne ut hvilke skjulte kommandoer vi kan finne.


Skjulte Fastboot-kommandoer og deres bruksområder

Du er kanskje kjent med noen av de mer vanlige fastboot-kommandoene, for eksempel fastboot flash eller fastboot oppstart. Det er mange flere fastboot-kommandoer som definert i åpen kildekode fastboot-protokoll. Her er en liste over fastboot-kommandoer som er tilgjengelige på hver enhet med en bootloader basert på den nyeste AOSP-koden:

Det som mangler i denne listen er fastboot oem kommandoer. Disse kommandoene er spesifikk til Android-enhetsprodusenter, og det er ingen omfattende liste eller dokumentasjon noe sted for hvilke fastboot oem-kommandoer som er tilgjengelige. Nå, hvis enhetsprodusenten din var snill nok til å gi en fastboot-kommando som viser alle oem-kommandoer (prøv fastboot oem ? og se om det fungerer), så trenger du ikke gjøre noe mer. Hvis det ikke er noen kommando som skriver ut en liste over tilgjengelige fastboot oem-kommandoer, må du skrive ut en liste over strenger fra aboot.img og søk etter oem-kommandoene manuelt.

'strings' er en linux-kommando, dokumentasjonen for det er tilgjengelig her. Som du kan se, bruker jeg personlig en Windows-maskin, så i stedet har jeg brukt en program som etterligner 'strenger' fra Linux. Råutgangen til 'strings'-kommandoen på en aboot.img-fil vil være ganske rotete, men hvis du bare CTRL+F for 'oem' bør du finne det du trenger. Hvis du vil avgrense søket, kan du prøve denne kommandoen (for Windows-versjonen jeg koblet til):

strings * | findstr /i oem

For Nexus 6P kompilerte jeg følgende liste over fastboot oem-kommandoer:

fastboot oem unlock-go
fastboot oem frp-unlock
fastboot oem frp-erase
fastboot oem enable reduced-version
fastboot oem device-info
fastboot oem enable-charger-screen
fastboot oem disable-charger-screen
fastboot oem enable-bp-tools
fastboot oem disable-bp-tools
fastboot oem enable-hw-factory
fastboot oem disable-hw-factory
fastboot oem select-display-panel
fastboot oem off-mode-charge enable
fastboot oem off-mode-charge disable
fastboot oem ramdump enable
fastboot oem ramdump disable
fastboot oem uart enable
fastboot oem uart disable
fastboot oem hwdog certify begin
fastboot oem hwdog certify close
fastboot oem get-imei1
fastboot oem get-meid
fastboot oem get-sn
fastboot oem get-bsn
fastboot oem get_verify_boot_status

Vær advart om at du ikke bør prøve noen av kommandoene ovenfor, eller noen av kommandoene du oppdager på enheten din, med mindre du er villig til å akseptere risikoen. Det er en grunn til at disse kommandoene er skjult for brukeren.

Når det er sagt, har jeg tenkt på noen fine bruksområder for noen av disse fastboot-kommandoene jeg har funnet (som kanskje er det eller ikke finnes på enheten din, så følg instruksjonene ovenfor for å sjekke!) som burde ha lyst på den mest hardcore Android entusiast. Det er to kommandoer her som kan ha praktisk nytte.

Først ut er fastboot oem (aktiver|deaktiver)-lader-skjerm kommando. Det dette gjør er å deaktivere ladeskjermen som dukker opp når enheten din er slått av. Hvis du ikke er en fan av den blendende lysstyrken på ladeskjermen når telefonen er av, kan du deaktivere den via denne skjulte fastboot-kommandoen!

Deretter er det fastboot oem off-mode-charge (aktiver|deaktiver) kommando. Denne kommandoen bestemmer om enheten skal slå seg på automatisk når en strømkilde oppdages. Som standard er den satt til "deaktiver". Jeg skal innrømme at denne kommandoen ikke har mye bruk for telefoner, men hvis du planlegger å montere nettbrettet i bilens dashbord, vil du finne denne kommandoen utrolig nyttig. Du vil kunne stille inn enheten til å slå seg på umiddelbart når nettbrettet får strøm, for eksempel når bilbatteriet starter. Motsatt er det ganske enkelt å slå av nettbrettet når strømmen går bort ved å bruke en automatiseringsapp som Tasker. Denne kommandoen fungerer forresten akkurat som skrevet på Nexus 7 (2013).


Det var det for denne leksjonen i Android-tilpassbarhet. Del kommandoene du oppdager (ideelt sett i en pastebin-lenke) i kommentarene nedenfor!

Takk til XDA Senior Recognized Developer Dees_Troy for hans hjelp med å lage denne artikkelen!