Como descobrir comandos ocultos do Fastboot

Na minha busca para descobrir o máximo possível sobre a personalização do Android, fiz muitas descobertas obscuras, mas interessantes. Eu mostrei como acessar os menus ocultos no seu dispositivo examinando todas as atividades ocultas do aplicativo no seu telefone. Mais recentemente, mostrei como acessar a ferramenta de diagnóstico de hardware oculto em determinados smartphones. Agora, percebo que alguns de vocês ficaram desapontados com o fato de seu smartphone não ter sido abordado no artigo anterior, e peço desculpas por isso.

Para compensar, vou orientá-lo em algo muito, muito mais avançado e empolgante: descarregar o carregador de inicialização do seu dispositivo para descobrir comandos ocultos do fastboot . Este guia, embora feito no meu Nexus 6P, é definitivamente replicável na maioria dos smartphones. No entanto, os comandos aos quais você terá acesso variam significativamente entre os dispositivos. A maioria dos comandos não o ajudará realmente em nenhuma situação real, mas, no entanto, é bastante interessante mergulhar nas configurações do seu telefone. Vamos começar.

Isenção de responsabilidade: desde que você saiba o que está fazendo e possa seguir as instruções adequadamente, nada de ruim deve acontecer com o seu dispositivo. Mas ainda estamos brincando com as partições do dispositivo e o carregador de inicialização, portanto não há como dizer o que poderia acontecer se você digitar o comando errado. Verifique se você tem um backup fora do dispositivo pronto!


Preparação

Antes de começar, há uma coisa muito, muito importante a ser observada. Para extrair o carregador de inicialização do seu dispositivo, você precisará de acesso root no seu telefone. Se você não tiver acesso root, poderá continuar lendo este guia para fins educacionais, mas não poderá executar nenhum dos comandos necessários. Percebido? Boa. Outro pré-requisito que você precisará cumprir é garantir que o seu computador possua todos os drivers ADB / fastboot adequados . Se você não possui os binários do ADB / fastboot, recomendo instalar o Minimal ADB & Fastboot em nossos fóruns. Quanto aos drivers, você pode pegar os drivers necessários para os dispositivos Google Nexus aqui e para todos os outros dispositivos daqui. Como você sabe se está pronto para ir? Conecte seu dispositivo, ative a Depuração USB em Configurações do desenvolvedor, abra um prompt de comando e digite:

 adb devices 

Se você vir o número de série do seu dispositivo, terá os drivers corretos.


Despejando o carregador de inicialização

Nosso primeiro passo é abrir um shell em nosso dispositivo para que possamos executar comandos no ADB. É melhor executarmos comandos no ADB, porque estamos muito mais propensos a cometer erros ao digitar em um teclado virtual, e cometer erros não é algo que você deseja fazer aqui. O primeiro comando que você deve executar no prompt de comando é:

 adb shell 

Se o prompt de comando mudar de exibição do diretório binário do ADB para exibição do nome de código do seu dispositivo Android, você inseriu com êxito o shell da linha de comando local do dispositivo. Agora, para acessar as partições que precisamos despejar, você precisará de acesso de superusuário. Para fazer isso, digite o seguinte:

 su 

O símbolo na frente do codinome do seu dispositivo deve mudar de $ para #, indicando que agora você pode executar comandos com privilégios elevados. Tenha cuidado agora!

A seguir, descobriremos a localização exata da imagem do carregador de inicialização do seu dispositivo. Para encontrar o diretório exato, imprimiremos uma lista de todas as partições e seus diretórios por nome e procuraremos uma em particular chamada ' aboot'. Você precisará digitar dois comandos da seguinte maneira:

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

Como você pode ver acima, uma lista gigante de diretórios de partição é impressa. Essas partições são classificadas por nome, para que possamos discernir facilmente o local da nossa partição do carregador de inicialização. No meu caso, o carregador de inicialização, que está 'aboot' na imagem acima, pode ser encontrado em / dev / block / mmcblk0p10. Isso variará dependendo do seu dispositivo, por isso é importante que você siga estas instruções para descobrir o verdadeiro diretório em que o seu carregador de inicialização está localizado. No entanto, observe este diretório, pois o referenciaremos no seguinte comando para despejar o carregador de inicialização:

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

Uma vez bem-sucedido, você deve encontrar um arquivo chamado ' aboot.img ' localizado na raiz do seu armazenamento interno. Agora que despejamos o carregador de inicialização, precisamos examiná-lo para determinar quais comandos ocultos podemos encontrar.


Comandos ocultos do Fastboot e seus usos

Você pode estar familiarizado com alguns dos comandos mais comuns do fastboot, como o flash de inicialização rápida ou a inicialização rápida . Existem muitos outros comandos do fastboot, conforme definido no protocolo de código aberto do fastboot. Aqui está uma lista dos comandos do fastboot disponíveis em todos os dispositivos com um gerenciador de inicialização baseado no código AOSP mais recente:

O que está faltando nesta lista são comandos do fastboot oem . Esses comandos são específicos para os fabricantes de dispositivos Android e não há lista ou documentação abrangente em nenhum lugar sobre quais comandos do fastboot oem estão disponíveis. Agora, se o fabricante do dispositivo tiver a gentileza de fornecer um comando fastboot que lista todos os comandos oem (tente o fastboot oem? E veja se isso funciona), não será necessário fazer mais nada. Se não houver nenhum comando que imprima uma lista de comandos disponíveis do fastboot oem, será necessário imprimir uma lista de cadeias de caracteres a partir do aboot.img e procurar os comandos oem manualmente.

'strings' é um comando linux, cuja documentação está disponível aqui. Como você pode ver, eu pessoalmente estou usando uma máquina Windows, então, em vez disso, estou usando um programa que imita 'strings' do Linux. A saída bruta do comando 'strings' em um arquivo aboot.img será bastante confusa, mas se você simplesmente CTRL + F para 'oem', deverá encontrar o que precisa. Se você quiser refinar sua pesquisa, tente este comando (para a versão do Windows que eu vinculei):

 strings * | findstr /i oem 

Para o Nexus 6P, compilei a seguinte lista de comandos fastboot oem:

 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 

Esteja avisado de que você não deve tentar nenhum dos comandos acima, nem nenhum dos comandos descobertos em seu dispositivo, a menos que esteja disposto a aceitar os riscos. Há uma razão pela qual esses comandos estão ocultos do usuário.

Dito isto, pensei em alguns usos interessantes para alguns desses comandos do fastboot que encontrei (que podem ou não estar presentes no seu dispositivo, siga as instruções acima para verificar!) Que devem gostar do Android mais hardcore entusiasta. Existem dois comandos aqui que podem ter algum uso prático.

Primeiro, o comando fastboot oem (enable | disable) -charger-screen . O que isso faz é desativar a tela de carregamento que aparece quando o dispositivo é desligado. Se você não é fã do brilho ofuscante da tela de carregamento quando o telefone está desligado, pode desativá-lo através deste comando oculto de inicialização rápida!

Em seguida, há o comando fastboot oem off-mode-charge (ativar | desativar) . Este comando determina se o seu dispositivo será ligado automaticamente quando uma fonte de energia for detectada. Por padrão, está definido como 'desativar'. Admito que esse comando não tem muita utilidade para telefones, mas se você planeja montar seu tablet no painel do carro, encontrará esse comando incrivelmente útil. Você poderá configurar o dispositivo para ligar imediatamente quando o tablet receber energia, como quando a bateria do carro for inicializada. Por outro lado, é muito fácil desligar o tablet quando a energia é perdida usando um aplicativo de automação como o Tasker. A propósito, este comando funciona exatamente como está escrito no Nexus 7 (2013).


É isso nesta lição de personalização do Android. Compartilhe os comandos que você descobrir (de preferência em um link pastebin) nos comentários abaixo!

Agradecemos ao desenvolvedor sênior reconhecido Dees_Troy por sua assistência na elaboração deste artigo!