Hur man upptäcker dolda Fastboot-kommandon

Det finns många dolda snabbstartkommandon på din enhet. För att hitta dem måste vi dumpa starthanteraren och undersöka innehållet!

I min strävan att upptäcka så mycket om Android-anpassning som jag kan, har jag gjort många oklara, men ändå intressanta upptäckter. Jag har visat dig hur du kommer åt dolda menyer på din enhet genom att sålla igenom alla dolda programaktiviteter på din telefon. På senare tid har jag visat dig hur du kommer åt diagnostiskt verktyg för dold maskinvara på vissa smartphones. Nu inser jag att några av er blev besvikna över det faktum att din smartphone inte täcktes i den tidigare artikeln, och jag ber om ursäkt för det.

För att kompensera för det kommer jag att leda dig genom något långt, mycket mer avancerat och spännande: dumpa enhetens starthanterare för att upptäcka dolda fastboot-kommandon. Denna guide, även om den är gjord på min Nexus 6P, är definitivt replikerbar på de flesta smartphones. Vilka kommandon du kommer att ha tillgång till kommer dock att variera avsevärt mellan enheter. De flesta kommandon kommer inte riktigt att hjälpa dig i någon verklig situation, men det är ändå ganska intressant att dyka så här djupt in i telefonens inställningar. Låt oss börja.

Friskrivningsklausul: Så länge du vet vad du gör och kan följa instruktionerna på rätt sätt, bör inget dåligt hända med din enhet. Men vi bråkar fortfarande med våra enhetspartitioner och starthanteraren, så det finns inget att säga vad som kan hända om du anger fel kommando. Se till att du har en säkerhetskopia utanför enheten redo!


Förberedelse

Innan vi sätter igång finns det en riktigt, väldigt viktig sak att notera. För att extrahera enhetens starthanterare, du behöver root-åtkomst på din telefon. Om du inte har root-åtkomst kan du fortsätta läsa den här guiden för utbildningsändamål, men du kommer inte att kunna utföra några av de nödvändiga kommandona. Förstod det? Bra. En annan förutsättning du måste uppfylla är att se till att din dator har allt rätt ADB/fastboot-drivrutiner. Om du inte har ADB/fastboot-binärfilerna rekommenderar jag att du installerar Minimal ADB & Fastboot från våra forum. När det gäller drivrutinerna kan du ta tag i de nödvändiga drivrutinerna för Google Nexus-enheter här och för alla andra enheter från här. Hur vet du om du är bra att gå? Anslut din enhet, aktivera USB Debugging under utvecklarinställningar, öppna en kommandotolk och skriv:

adb devices

Om du ser enhetens serienummer dyker upp har du rätt drivrutiner.


Dumpar Bootloader

Vårt första steg är att öppna ett skal på vår enhet så att vi kan köra kommandon över ADB. Det är bäst att vi kör kommandon över ADB eftersom vi är mycket mer benägna att göra misstag när du skriver på ett virtuellt tangentbord, och att göra misstag är inget du vill göra här. Det första kommandot du bör köra i din kommandotolk är:

adb shell

Om du ser kommandotolken ändras från att visa den binära ADB-katalogen till att visa kodnamnet för din Android-enhet, har du angett din enhets lokala kommandoradsskal. Nu, för att komma åt de partitioner vi behöver dumpa, behöver du superanvändaråtkomst. För att göra det, skriv följande:

su

Symbolen framför din enhets kodnamn bör ändras från $ till # vilket indikerar att du nu kan köra kommandon med förhöjda privilegier. Var försiktig nu!

Därefter kommer vi att ta reda på den exakta platsen för din enhets bootloader-bild. För att hitta den exakta katalogen kommer vi att skriva ut en lista över alla partitioner och deras kataloger efter namn, och leta efter en som heter 'en stövel.' Du måste ange två kommandon enligt följande:

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

Som du kan se ovan skrivs en gigantisk lista med partitionskataloger ut. Dessa partitioner är sorterade efter namn, så att vi enkelt kan urskilja platsen för vår bootloader-partition. I mitt fall, bootloader, som är 'en stövel' i bilden ovan, kan hittas på /dev/block/mmcblk0p10. Detta kommer att variera beroende på din enhet, så det är viktigt att du följer dessa instruktioner för att ta reda på den sanna katalogen där din bootloader finns. Notera dock denna katalog, eftersom vi kommer att referera till den i följande kommando för att dumpa starthanteraren:

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

När du lyckats bör du hitta en fil som heter 'aboot.img' finns på roten av ditt interna minne. Nu när vi har dumpat starthanteraren måste vi undersöka den för att avgöra vilka dolda kommandon vi kan hitta.


Dolda Fastboot-kommandon och deras användningsområden

Du kanske är bekant med några av de vanligare snabbstartkommandona, som t.ex fastboot flash eller fastboot boot. Det finns många fler fastboot-kommandon som definieras i fastboot-protokoll med öppen källkod. Här är en lista över fastboot-kommandon som är tillgängliga på varje enhet med en bootloader baserad på den senaste AOSP-koden:

Det som saknas i den här listan är fastboot oem kommandon. Dessa kommandon är specifik till Android-enhetstillverkare, och det finns ingen heltäckande lista eller dokumentation någonstans för vilka fastboot oem-kommandon som är tillgängliga. Nu, om din enhetstillverkare var vänlig nog att tillhandahålla ett fastboot-kommando som listar alla oem-kommandon (försök fastboot oem ? och se om det fungerar), så behöver du inte göra något mer. Om det inte finns något kommando som skriver ut en lista över tillgängliga fastboot oem-kommandon, måste du skriva ut en lista med strängar från aboot.img och sök efter oem-kommandona manuellt.

'strings' är ett linux-kommando, vars dokumentation är tillgänglig här. Som ni förstår använder jag personligen en Windows-maskin, så istället har jag använt en program som efterliknar "strängar" från Linux. Den råa utmatningen av kommandot 'strings' på en aboot.img-fil kommer att vara ganska rörigt, men om du bara CTRL+F för 'oem' bör du hitta det du behöver. Om du vill förfina din sökning kan du prova detta kommando (för Windows-versionen jag länkade):

strings * | findstr /i oem

För Nexus 6P kompilerade jag följande lista med fastboot oem-kommandon:

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

Varnas för att du inte bör försöka något av ovanstående kommandon, eller något av kommandona som du upptäcker på din enhet, om du inte är villig att acceptera riskerna. Det finns en anledning till att dessa kommandon är dolda för användaren.

Med det sagt, jag har tänkt på några snygga användningsområden för några av dessa fastboot-kommandon jag har hittat (som kanske eller kanske inte är finns på din enhet, så följ instruktionerna ovan för att kontrollera!) som borde ha den mest hårda Android entusiast. Det finns två kommandon här som kan ha praktisk användning.

Först ut är fastboot oem (enable|disable)-charger-screen kommando. Vad detta gör är att inaktivera laddningsskärmen som dyker upp när din enhet stängs av. Om du inte är ett fan av den bländande ljusstyrkan på laddningsskärmen när din telefon är avstängd, kan du inaktivera den via detta dolda snabbstartkommando!

Därefter är det fastboot oem off-mode-charge (aktivera|inaktivera) kommando. Det här kommandot avgör om din enhet automatiskt slås på när en strömkälla upptäcks. Som standard är den inställd på "inaktivera". Jag kommer att erkänna att det här kommandot inte har mycket användning för telefoner, men om du planerar att montera din surfplatta i bilens instrumentbräda, kommer du att hitta detta kommando otroligt användbar. Du kommer att kunna ställa in din enhet så att den startas omedelbart när surfplattan får ström, till exempel när ditt bilbatteri startar. Omvänt är det ganska enkelt att stänga av surfplattan när strömmen går förlorad genom att använda en automatiseringsapp som Tasker. Detta kommando fungerar förresten exakt som det är skrivet på Nexus 7 (2013).


Det var allt för den här lektionen i Android anpassningsbarhet. Dela kommandona som du upptäcker (helst i en pastebin-länk) i kommentarerna nedan!

Tack vare XDA Senior Recognized Developer Dees_Troy för hans hjälp med att göra denna artikel!