【Root】Iplay 20 / Iplay 20 proのRoot化(Magisk)導入について色々

記事android,avb,iplay 20,magisk,pro,root,署名

スポンサーリンク

Alldocube Iplay 20 (pro)のRoot化のあれこれ

さてつい最近Androidタブレットを購入して、最初からブートローダーを解除してMagiskを導入しようとしましたが

全てに躓きました!

もうそれは完璧に最初から最後まで、ブートローダー解除からMagisk導入まですべて!!

一応Razer PhoneでMagiksは導入済みで「前回と同じやろww」と思ったのが大間違い。

でも最終的には無事Magisk導入できました、課題は残りましたが。

以下、iplay 20 / iplay 20 pro両方がこの方法になります。
ファクトリーイメージが共通なあたり端末スペックが違うだけ?

また電源オフ状態からfastbootモードへの行き方がわからないため、bootloaderから動かなくなった方はこの後紹介する方法で工場出荷状態にしてください。

またそのためデータは消える覚悟で居てください!(自分も5回ぐらいは初期化してます!!)

では早速導入していきます、全て自己責任でお願いします!!

ブートローダー解除

まずrazer phoneではブートローダーの解除はfastbootコマンドで簡単に解除できました。

ただしiplay 20はブートローダーの解除にコードが必要でした!
それが最初の課題、razerの時はなかったので完全に「どうするんだこれ…」という状況に

最終的にはここのフォーラムを参考に解除しました。

フォーラムに登録後、上のURLのところから解除ツールをダウンロードできますがLinuxが必要です。
自分はwindows上にvirtualboxにUbuntuを導入して仮想環境でやりました()

VirtualboxがUSBをwindows越しに認識してくれる機能があったおかげでできた脳筋戦法。

iplay 20をfastboot modeにして以下のコマンド

fastboot oem get_identifier_token

そうすると2つのコードが出てくると思います。

xxxxxxxxxxxxxxxxxxx

zzzzzzzzzzzzzzzz

みたいに、それを足して解除ツールに設定すると解除するためのファイルが生成されます。

xxxxxxxxxxxxxxxxxxxxxxzzzzzzzzzz

みたいに。

後は上のURL通りに進めるだけ。

Magisk導入

さてブートローダー解除できて後はmagisk当てたboot.imgを導入するだけだーw

と思ってました。Razerの時はそうだった。

公式からファクトリーイメージが出てたのでそのboot.imgにmagiskのパッチを当ててmagisk_boot.imgはできたのですが、fastboot flash boot magisk_boot.imgをした後Iplay 20起動せず!!

その前に公式のファクトリーイメージは.pacという特殊ファイルになっているので公式からSPD_Upgrade_Toolというツールで.pacをロード後SPD_Upgrade_Toolのフォルダに解凍されたimageフォルダができるのでその中にboot.imgあります。

さて話は戻り起動できませんでした、Magiskのバージョンが悪いのか?と思いcanaryからstable版のをパッチしたboot.imgを生成して再度フラッシュしましたがダメでした。

また話はそれますが、起動しなくなったiplay 20(正確にはbootloaderで止まってします)はSPD_Upgrade_Toolで工場出荷時状態になりますが起動できるようにしてくれます。

さて話はまた戻り、起動できませんでした。

調べたらAVBという機能が原因と発覚。

「AVBとはなんぞ?」

どうやら各パーティションの署名機能の名称らしい。
つまりパッチしたboot.imgが署名された情報と違い起動させてくれなかったということらしい。

以下筆者の勘違いしている可能性大いにあり。

んでどうやらvbmetaパーティションの署名情報を自前で用意したのに差し替えて、各パーティションのimgを自前で用意したのを署名することで解決できるようす。

つまり会社が用意した署名情報をすべて自前で用意したのに差し替えるということですね。

大まかな流れは

  1. 自前の鍵を用意する(この後紹介)
  2. 会社が用意した署名ファイル(vbmeta-sign.img)をHxDというツールで開き、各パーティションの署名情報を抽出しファイル化
  3. 各パーティションの署名をファイル化したのをとあるツールと鍵で自作署名ファイル(custom-vbmeta-sign.img)を生成
  4. 自作署名ファイル(custom-vbmeta-sign.img)をiplay 20にフラッシュ
  5. magiskをパッチしたboot.imgに自前の鍵とツールで署名
  6. 自作署名とmagiskを当てたboot.imgをiplay 20にフラッシュして終わり。

これで合ってるはず…(複雑!!)

詳細はこちらのスレ

ここで各ツールやファイルをログイン後ダウンロードできるようになるのでLinuxにダウンロードしてください。

とりあえず、1についてはOpenSSLやPutty(Puttyで可能化は知らないです)で秘密鍵(.pem)を生成します。

あとはスレ通りPythonで秘密鍵をベースに公開鍵(.bin)がkeyフォルダに生成されます。

2もスレにあるHxDをダウンロードしてvbmeta-sign.imgを開き署名を抽出&ファイルにしていってください。
最後のパーティションは署名がわかりにくいので注意とのこと。

抽出の仕方はこちら

ちなみに署名のコードはオフセット408でした。これを確認すれば署名のコードがあってるかは簡単にだがわかる。

3は抽出した署名ファイル(スレだとKey_~.bin)と公開鍵(.bin)をもとについに自作署名ファイル(custom-vbmeta-sign.img)を生成します。

ただしiplay 20はパーティション名が少し特殊だったのでスレの通りにやると失敗します。

avbtool make_vbmeta_image --key rsa4096_vbmeta.pem --algorithm SHA256_RSA4096 --flag 0 \
--chain_partition boot:1:keys/CUSTOM_KEY.bin \
--chain_partition dtbo:10:keys/vbmeta_dtbo_signature.hex \
--chain_partition recovery:2:keys/vbmeta_recovery_signature.hex \
--chain_partition socko:11:keys/vbmeta_socko_signature.hex \
--chain_partition odmko:12:keys/vbmeta_odmko_signature.hex \
--chain_partition vbmeta_system:3:keys/vbmeta_vbmeta_system_signature.hex \
--chain_partition vbmeta_vendor:4:keys/vbmeta_vbmeta_vendor_signature.hex \
--chain_partition l_modem:6:keys/vbmeta_l_modem_signature.hex \
--chain_partition l_ldsp:7:keys/vbmeta_l_ldsp_signature.hex \
--chain_partition l_gdsp:8:keys/vbmeta_l_lgdsp_signature.hex \
--chain_partition pm_sys:9:keys/vbmeta_pm_sys_signature.hex \
--padding_size 16384 \
--output vbmeta_custom.img

この vbmeta~.hexを抽出した各署名ファイル(Key~.bin)に置換してください。
例えば2行目の

--chain_partition boot:1:keys/CUSTOM_KEY.bin \

はCUSTOM_KEY.binを抽出したbootの署名ファイル(key~.bin)に置換してください。

またlinuxに上のコードを端末に入力する時は1行ずつコピーして貼り付けてください(まとめてコピペすると端末上で改行されるため)

あとは実行することでvbmeta_custom.imgが生成されます。
確認したら同フォルダ内で以下のコマンドでvbmeta_pad.pyを叩きます。

python vbmeta_pad.py

これで1MBのvbmeta_custom.imgになってれば完了です。

できたvbmeta_custom.imgを以下のコマンドでiplay 20にフラッシュします。

fastboot flash vbmeta vbmeta_custom.img

これで端末の署名パーティションは自前の署名に置き換わります。

次は5のboot.imgに署名ですね、これは簡単です。

python avbtool add_hash_footer --image magisk_patched.img --partition_name boot --partitio n_size 36700160 --key keys / gk_custom_key.bin --algorithm SHA256_RSA4096

avbtoolとkeysフォルダが有るところで端末を開き、パーティションサイズはオリジナルのboot.imgのサイズを入力し

gk_custom_key.bin のところは自前の署名ファイル(.bin)を指定してください。

–image magisk_patched.img のところもmagiskのパッチを当てたboot.img名に変えて同フォルダ内に移動させた後コマンドを実行してください。

これでパッチを当てたboot.imgに署名ができます。

あとはこのできたboot.imgをフラッシュすることで完了です。

注意

まずmagiskをアップデートするとboot.imgの署名が無効になり起動できなくなります。
理由は単純にmagiskがboot.imgを更新した際にサイズや情報が一致しなくなったため。

ちなみに間違えて更新してしまった場合は、もう一度PCにある署名したboot.imgをフラッシュする。
そういえば良い忘れていたがSPD_Upgrade_Toolの.pacロード済み中に出るimageフォルダ内のboot.imgを署名済みのに差し替えて名前合わせればこのツールでもfastbootmodeじゃなくてもインストールできるやん…

あーでもその方法だとすべてのフォルダが上書きされるから実質工場出荷状態になりますね()

なので一番いい解決策はavbを無効化することなのですがandroid 9以降はmagiskでのavb無効化はできなくなり、fastbootコマンドで解除するしか無いのですが、自分はできませんでした。

fastboot --disable-verity flash vbmeta vbmeta.img
fastboot --disable-verity -disable-verification flash vbmeta vbmeta.img

この2つのコマンドのどちらかで無効化できるようですが、vbmeta.imgのところは先程自作した自作署名ファイルのvbmeta-custom.imgを指定すればいいと思います、うまく行ったら教えてほしいです。

感想

日本語の記事なさすぎて疲れた()
英語読めないので頑張ってgoogle 翻訳先生に頼りつつ自己解釈と洞察力頼みで無事成功。

まじavb無効化はできるようにしたい…

つたない記事ですが理解してうまく行けば幸いです。

記事android,avb,iplay 20,magisk,pro,root,署名

Posted by Premirea