非表示のFastbootコマンドを見つける方法

Androidのカスタマイズについて可能な限り発見するための探求において、私は多くのあいまいでありながら興味深い発見をしました。 スマートフォン上のすべての非表示のアプリケーションアクティビティをふるいにかけることで、デバイス上の非表示のメニューにアクセスする方法を示しました。 最近、特定のスマートフォンで隠しハードウェア診断ツールにアクセスする方法を紹介しました。 今、私はあなたの何人かがあなたのスマートフォンが前の記事でカバーされていなかったという事実に失望していることを認識し、私はそれについて謝罪します。

それを補うために、はるかに高度でエキサイティングな何かを説明しますデバイスのブートローダーをダンプして、隠されたfastbootコマンドを発見します 。 このガイドは、Nexus 6Pで作成されていますが、ほとんどのスマートフォンで間違いなく複製可能です。 ただし、アクセスできるコマンドはデバイスによって大きく異なります。 ほとんどのコマンドは実際の状況では実際には役立ちませんが、それでも電話機の設定を深く掘り下げることは非常に興味深いことです。 始めましょう。

免責事項:自分が何をしているかを知っていて、適切に指示に従うことができれば、デバイスに何も悪いことは起きません。 しかし、まだデバイスパーティションとブートローダーをいじっているので、間違ったコマンドを入力するとどうなるかわかりません。 オフデバイスバックアップの準備ができていることを確認してください!


準備

始める前に、本当に重要なことがあります。 デバイスのブートローダーを抽出するには、電話機でルートアクセスが必要です。 ルートアクセス権がない場合は、教育目的でこのガイドを読み続けることができますが、必要なコマンドを実行することはできません。 わかった? 良い。 満たす必要がある別の前提条件は、コンピューターに適切なADB / fastbootドライバーがすべてあることを確認することです。 ADB / fastbootバイナリがない場合は、フォーラムからMinimal ADB&Fastbootをインストールすることをお勧めします。 ドライバーについては、ここからGoogle Nexusデバイスに必要なドライバーを、ここから他のすべてのデバイスに入手できます。 あなたが行ってもいいかどうかをどのように知っていますか? デバイスを接続し、開発者設定でUSBデバッグを有効にし、コマンドプロンプトを開き、次のように入力します。

 adb devices 

デバイスのシリアル番号が表示されたら、適切なドライバーを入手しています。


ブートローダーのダンプ

最初のステップは、デバイスでシェルを開き、ADBでコマンドを実行できるようにすることです。 仮想キーボードで入力するときにミスを犯しやすいため、ADBでコマンドを実行することをお勧めします。ミスを犯すことはここで行いたいことではありません。 コマンドプロンプトで実行する最初のコマンドは次のとおりです。

 adb shell 

コマンドプロンプトがADBバイナリディレクトリの表示からAndroidデバイスのコードネームの表示に変わる場合は、デバイスのローカルコマンドラインシェルが正常に入力されています。 ここで、ダンプする必要があるパーティションにアクセスするには、スーパーユーザーアクセスが必要になります。 これを行うには、次を入力します。

 su 

デバイスのコードネームの前にある記号が$から#に変わるはずです。これは、昇格した特権でコマンドを実行できることを示しています。 今すぐ注意してください!

次に、デバイスのブートローダーイメージの正確な場所を把握します。 正確なディレクトリを見つけるために、すべてのパーティションとそのディレクトリの名前のリストを出力し、特に「 aboot」と呼ばれるものを探します 次の2つのコマンドを入力する必要があります。

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

上記のように、パーティションディレクトリの巨大なリストが出力されます。 これらのパーティションは名前でソートされているため、ブートローダーパーティションの場所を簡単に識別できます。 私の場合、上記のイメージでは「aboot」であるブートローダーは/ dev / block / mmcblk0p10にあります。 これお使いのデバイスによって異なりますので、これらの指示に従ってブートローダーが置かれている実際のディレクトリを把握することが重要です。 ただし、次のコマンドで参照してブートローダーをダンプするため、このディレクトリに注意してください。

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

成功すると、内部ストレージのルートにある「 aboot.img 」というファイルが見つかります。 ブートローダーをダンプしたので、ブートローダーを調べて、どの隠しコマンドを見つけることができるかを判断する必要があります。


非表示のFastbootコマンドとその使用

fastboot flashfastboot bootなど、より一般的なfastbootコマンドのいくつかに精通しているかもしれません オープンソースのfastbootプロトコルで定義されているfastbootコマンドはさらに多くあります。 以下は、最新のAOSPコードに基づくブートローダーを備えたすべてのデバイスで利用可能なfastbootコマンドのリストです。

このリストにないのはfastboot oemコマンドです。 これらのコマンドはAndroidデバイスメーカーに固有のものであり、利用可能なfastboot oemコマンドに関する包括的なリストやドキュメントはどこにもありません。 デバイスメーカーがすべてのoemコマンドを一覧表示するfastbootコマンドを提供するのに十分親切であれば( fastboot oemを試して、それが機能するかどうかを確認してください)、それ以上何もする必要はありません。 使用可能なfastboot oemコマンドのリストを出力するコマンドがない場合、aboot.imgから文字列のリストを出力し、oemコマンドを手動で検索する必要があります。

'strings'はlinuxコマンドで、そのドキュメントはこちらから入手できます。 おわかりのように、私は個人的にWindowsマシンを使用しているため、代わりにLinuxの「文字列」を模倣するプログラムを使用しています。 aboot.imgファイルでの 'strings'コマンドの生の出力は非常に面倒ですが、単に 'oem'のCTRL + Fを使用すると、必要なものが見つかるはずです。 検索を絞り込みたい場合は、次のコマンドを試してください(リンクしているWindowsバージョンの場合)。

 strings * | findstr /i oem 

Nexus 6Pの場合、次の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 

リスクを受け入れない限り、上記のコマンドやデバイスで発見したコマンドを試みないでください。 これらのコマンドがユーザーから隠されているのには理由があります。

そうは言っても、私が見つけたこれらのfastbootコマンドのいくつかのきちんとした使用を考えました(デバイス上に存在する場合も、存在しない場合もありますので、上記の手順に従ってチェックしてください!)愛好家。 ここには2つのコマンドがあり、実際に使用できます。

最初はfastboot oem(enable | disable)-charger-screenコマンドです。 これにより、デバイスの電源がオフになったときにポップアップ表示される充電画面が無効になります。 お使いの携帯電話がオフのときに充電画面の眩しい明るさのファンでない場合は、この隠されたfastbootコマンドを使用して無効にすることができます!

次に、 fastboot oem off-mode-charge(enable | disable)コマンドがあります。 このコマンドは、電源が検出されたときにデバイスが自動的にオンになるかどうかを決定します。 デフォルトでは、「無効」に設定されています。 このコマンドは電話にはあまり役に立たないことは認めますが、タブレットを車のダッシュボードに取り付けることを計画している場合、このコマンドは非常に便利です。 カーバッテリーの起動時など、タブレットに電力が供給されるとすぐにデバイスの電源がオンになるように設定できます。 逆に、Taskerなどの自動化アプリを使用すると、電源が失われたときにタブレットの電源を切るのは非常に簡単です。 ところで、このコマンドは、Nexus 7(2013)に記載されているとおりに機能します。


Androidカスタマイズのこのレッスンは以上です。 発見したコマンドを(理想的にはpastebinリンクで)以下のコメントで共有してください!

この記事の作成に協力してくれたシニア認定開発者Dees_Troyに感謝します!