Hvordan oppdage skjulte fastboot-kommandoer

I min søken etter å oppdage så mye om Android-tilpasning som jeg muligens kunne, har jeg gjort mange obskure, men likevel interessante funn. Jeg har vist deg hvordan du får tilgang til skjulte menyer på enheten din ved å bla gjennom alle de skjulte applikasjonsaktivitetene på telefonen. Nylig har jeg vist deg hvordan du får tilgang til det skjulte diagnostiske verktøyet for maskinvare på visse smarttelefoner. Nå skjønner jeg at noen av dere ble skuffet over at smarttelefonen ikke ble dekket i forrige artikkel, og jeg beklager det.

For å gjøre opp for det, kommer jeg til å lede deg gjennom noe langt, langt mer avansert og spennende: dumping av enhetens bootloader for å oppdage skjulte fastboot-kommandoer . Selv om denne guiden er gjort på min Nexus 6P, kan den absolutt repliseres på de fleste smarttelefoner. Hvilke kommandoer du har tilgang til vil imidlertid variere betydelig mellom enhetene. De fleste kommandoer vil ikke hjelpe deg i noen reelle situasjoner, men det er likevel 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, skal ikke noe ille skje med enheten din. Men vi roter fremdeles med enhetspartisjonene og bootloader, så det er ingen som forteller hva som kan skje hvis du skriver inn feil kommando. Forsikre deg om at du har en sikkerhetskopi utenfor enheten!


Forberedelse

Før vi kommer i gang, er det en virkelig, veldig viktig ting å merke seg. For å hente ut bootloader på enheten din, trenger du rottilgang på telefonen. Hvis du ikke har rottilgang, kan du fortsette å lese denne guiden for utdannelsesmessige formål, men du vil ikke kunne utføre noen av de nødvendige kommandoene. Forstod det? God. En annen forutsetning du må oppfylle er å sikre at datamaskinen din har alle de riktige ADB- / fastboot-driverne . Hvis du ikke har ADB / fastboot-binærene, anbefaler jeg at du installerer Minimal ADB & Fastboot fra forumene våre. Når det gjelder driverne, kan du ta tak i de nødvendige driverne for Google Nexus-enheter her og for alle andre enheter herfra. Hvordan vet du om du er god å gå? Koble til enheten din, aktiver USB-feilsøking under Developer Settings, åpne opp en ledetekst og skriv:

 adb devices 

Hvis du ser serienummeret til enheten din dukke opp, har du de riktige driverne.


Dumping av bootloader

Det første trinnet vårt 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ør feil er ikke noe du vil gjøre her. Den første kommandoen du skal 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 trenger å dumpe, trenger du superbruker tilgang. For å gjøre det, skriver du inn følgende:

 su 

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

Deretter finner vi ut den nøyaktige plasseringen av enhetens bootloader-bilde. For å finne den nøyaktige katalogen, skriver vi ut en liste over alle partisjonene og katalogene deres med navn, og ser etter en som spesielt heter ' aboot'. Du må angi to kommandoer som følger:

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

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

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

Når den er vellykket, bør du finne en fil som heter ' aboot.img ' som ligger på roten til den interne lagringen. Nå som vi har dumpet bootloader, 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 open source fastboot-protokollen. Her er en liste over fastboot-kommandoer som er tilgjengelige på alle enheter med en startlaster basert på den nyeste AOSP-koden:

Det som mangler i denne listen er fastboot oem- kommandoer. Disse kommandoene er spesifikke for produsenter av Android-enheter, og det er ingen omfattende liste eller dokumentasjon noe sted for hvilke fastboot oem-kommandoer som er tilgjengelige. 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), trenger du ikke å gjøre noe videre. 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øke etter oem-kommandoene manuelt.

'strings' er en linux-kommando hvis dokumentasjon er tilgjengelig her. Som du kan si, bruker jeg personlig en Windows-maskin, så i stedet har jeg brukt et program som etterligner "strenger" fra Linux. Den rå utdata fra '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 ditt, kan du prøve denne kommandoen (for Windows-versjonen jeg lenket):

 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 de ovennevnte kommandoene, 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 pene bruksområder for noen av disse fastboot-kommandoene jeg har funnet (som kanskje ikke er til stede på enheten din, så følg instruksjonene ovenfor for å sjekke!) Som skulle tenke på den mest hardcore Android entusiast. Det er to kommandoer her som kan ha praktisk bruk.

Først opp er fastboot oem (enable | deaktiver) -charger-screen kommando. Hva dette gjør er å deaktivere ladeskjermen som dukker opp når enheten din er slått av. Hvis du ikke er tilhenger av den blendende lysstyrken på ladeskjermen når telefonen er slått av, kan du deaktivere den via denne skjulte fastboot-kommandoen!

Deretter er det kommandoen fastboot oem off-mode-charge (enable | deaktiver) . Denne kommandoen bestemmer om enheten din automatisk skal slås på når en strømkilde blir oppdaget. Som standard er det satt til 'deaktivere'. Jeg må innrømme at denne kommandoen ikke har mye bruk for telefoner, men hvis du planlegger å montere nettbrettet i bilens instrumentbord, vil du finne denne kommandoen utrolig nyttig. Du vil kunne stille inn enheten slik at den umiddelbart slås på 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 tapt ved å bruke en automatiseringsapp som Tasker. Denne kommandoen fungerer forresten nøyaktig som skrevet på Nexus 7 (2013).


Det er det for denne leksjonen om tilpassing av Android. Del kommandoene du oppdager (ideelt i en pastebin-lenke) i kommentarene nedenfor!

Takk til anerkjent seniorutvikler Dees_Troy for hans hjelp til å lage denne artikkelen!