z581klのfastbootを解析する

watch_later 2021年3月22日月曜日

ASUSのzenpad 3 8.0(z581kl)とzenpad z8(zt581kl)はfastboot oem unlockなどブートローダーアンロック系のコマンドがすべて通用しません。なぜならメーカーが無効にしているからです。

今回はこれをアンロックするためにしている解析について途中経過を書いていきます。

この記事によって生じた不利益について一切責任を取りません。文鎮化などのリスクがあることを理解してください。

そもそもブートローダーアンロックとはなにか

ブートローダーアンロックはAndroid端末のブートローダーモードで以下のようなコマンドを使用できるようにするものです。
・fastboot flash 
このコマンドはimgファイルをパーティションに書き込むものです。リカバリをTWRPなどに入れ替えたりsystem領域を入れ替えてカスタムロムを入れたりします。

・fastboot erase
指定したパーティションをフォーマットします。

・fastboot boot
指定したimgファイルからTWRPなどを起動します。

ブートローダーアンロックを行うと大抵メーカー保証はなくなります。主に改造する人向けなので一般的な使い方をする場合は不要なものです。

ブートローダーの解析

全機種に共通する方法
ブートローダーの解析といってもプログラミングなどの知識は不要です。ただ、かなり時間がかかり面倒です。

1、TWRPを焼くかroot化
2、adb(root権限利用可能が前提)で以下のコマンドを実行
adb shell
3、#と表示されることを確認。$になっている場合はsuを実行します。できない場合は1のことをやってないに違いありません。
4、ls /dev/block/bootdevice/by-nameを実行。(/dev/block以降端末によって異なる可能性があります。ls使って探してください。)
実行後パーティション一覧が表示されます。これ以降の説明ではパーティション一覧が/dev/block/bootdevice/by-name/にあることを前提に話します。異なる場合は置き換えてください。
5、以下のコマンドを実行します。「数字」のところはこのコマンドを実行した回数に合わせて1から順につけてください。
dd if=/dev/block/bootdevice/by-name/解析対象パーティション名 of=/sdcard/imgs/数字.img bs=4096 
6、fastbootへ行きます。adb reboot bootloader
7、fastbootで何でもよいので1つ設定値を変更します。(fastboot oem disable-charger-screenなど)
8、5に戻り数字のところを2にしてコマンドを実行します。
9、cmpコマンドでファイル比較をします。
cd /sdcard/imgs
cmp 1.img 2.img
ここで何も出なければパーティションに変更はくわえられていないということなのでこのパーティションはブートローダーの設定保存場所ではありません。
もし以下のようになればこのパーティションはブートローダーの設定保存場所です。
 cmp 1.img 2.img
1.img 2.img differ: byte 9, line 1
6に戻っていろいろ設定値を変えて、バイナリエディタで変更箇所を確認してみてください。いずれ法則性がわかるでしょう。

zt581klの解析

この機種では上記の方法でlimitsパーティションが設定保存先と特定しました。
変化の様子は以下の通りです。
※赤文字が変更箇所
1                                                   (bootloader)         Device tampered: false
(bootloader)    Device unlocked: false
(bootloader)    Device critical unlocked: false
(bootloader)    Device verity mode: enforcing
(bootloader)    Charger screen enabled: true
(bootloader)    Display panel:

0000000 9812 2034 0000 0001 00a2 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
*
0000440 0000 0000 0000 0000 0000 00a2 0000 0000
0000460 0000 0000 0000 0000 0000 0000 0000 0000
*
0100000


2                                                   (bootloader)         Device tampered: false
(bootloader)    Device unlocked: false
(bootloader)    Device critical unlocked: false
(bootloader)    Device verity mode: logging
(bootloader)    Charger screen enabled: true
(bootloader)    Display panel:

0000000 9812 2034 0000 0001 00a4 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
*
0000440 0000 0000 0000 0000 0000 00a4 0000 0000
0000460 0000 0000 0000 0000 0000 0000 0000 0000
*
0100000

3                                                   (bootloader)         Device tampered: false
(bootloader)    Device unlocked: false
(bootloader)    Device critical unlocked: false
(bootloader)    Device verity mode: logging
(bootloader)    Charger screen enabled: false
(bootloader)    Display panel:

0000000 9812 2034 0000 0001 00a6 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
*
0000440 0000 0000 0000 0000 0000 00a6 0000 0000
0000460 0000 0000 0000 0000 0000 0000 0000 0000
*
0100000

4                                                   (bootloader)         Device tampered: false
(bootloader)    Device unlocked: false
(bootloader)    Device critical unlocked: false
(bootloader)    Device verity mode: enforcing
(bootloader)    Charger screen enabled: false
(bootloader)    Display panel:

0000000 9812 2034 0000 0001 00aa 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
*
0000440 0000 0000 0000 0000 0000 00aa 0000 0000
0000460 0000 0000 0000 0000 0000 0000 0000 0000
*
0100000

結果常に同じ個所が変化していることがわかりました。続きは後ほど追記します。

この記事を書いた人



sentiment_satisfied 絵文字