謎の情報発信局

◆実際◆ 基礎知識さえあれば分かる解説で書いてるつもりです。 ◆無能◆

Pixel 5をroot化する方法

まえがき

2年も間空いてますがちゃんと生きてます
今回スマホを機種変更してPixel 5を購入しました
ただOEMロックの解除に100日待たされたから即権限掌握が出来なかったのが不満点だが…
この記事は日本語で解説してある記事が機械翻訳の記事とかだったので忘備録も兼ねて書く事にする
また、2021年1月から仕様の変わったSafetyNetの突破にも成功したのでそれについても記載しておく

もうすぐPixel 6が出る?知らんな
多分手順はこれと変わらないと思うが…

とりあえずまえがきはこの程度にしておいて本編に入る

作業の前に

Pixel 5にはOEMロックという物が存在し*1、それを解除しない限りブートローダーもアンロック出来ない。
ここで言うOEMロックはキャリアの言うSIMロックと同義と考えていい。
キャリアによってSIMロックの解除の条件は違うが、ここではPixel 5に限定して話をする。(SIMフリー端末の場合はこのステップは飛ばしても問題ないと思う)
日本国内でPixel 5を扱っているキャリアはauSoftbankの2つ(格安キャリアは調べた事無いから分からん)で、それぞれ個人契約ならネット上からSIMロック解除の手続きが出来る。

なお、Googleストアから直接買った物に関しては恐らくSIMロックという概念が存在しないため、この作業は不要となる。

実際に権限を掌握するまで

ここから先の話は全てWindows 10準拠とする
注意:一度ファクトリーリセットを挟むのでデータは全て消えます。必ずバックアップしましょう。

ブートローダーのアンロックまで

まず、Google純正のUSBドライバとSDK Platform-Tools(以下SDK)を用意する。
ドライバはこのページから、SDK Platform-ToolsはこのページDLする事が出来る。
ドライバとSDKを入手したら先程DLした両方を展開しておき、Pixel 5側の設定から開発者向けオプションを有効にする。
今後複数回SDKを使うならば環境変数にパスを通すといいが、今回の作業程度なら一々パスを通す必要は無いかと思われる。
一応パスを通す手法も記しておく。

  1. まずSDKをどこでもいいので分かりやすい場所に展開する。
    f:id:backslash-root:20210810190238p:plain
  2. 次にタスクバーのWindowsマーク(スタートメニューのアレ)を右クリックし、そこからシステム(Y)を押して設定画面を開く。
    f:id:backslash-root:20210810190423p:plain
  3. 右にある関連設定のカラムからシステムの詳細設定を開く。
    f:id:backslash-root:20210810190537p:plain
  4. 詳細設定タブの一番下にある環境変数を開き、Pathを選んで編集をクリック
    f:id:backslash-root:20210811013519p:plain
  5. 新規をクリックし、先程展開したSDKのフォルダをフルパスで指定する
    f:id:backslash-root:20210811013757p:plain
  6. あとは再起動すればコマンドプロンプトでわざわざフルパスで書かなくても呼び出せるようになる

設定画面を開き、デバイス情報を選択し、その中のビルド番号を7回タップする。

f:id:backslash-root:20210612222337p:plain
この時後々使うのでビルド番号も同時に確認しておくこと。

そして開発者向けオプションを選択出来るようにしたらシステムを開き、詳細設定を展開し、開発者向けオプションを開き、その中のOEMロック解除をONにする。

f:id:backslash-root:20210612222822p:plain
画像では既にOEMロックを解除している

OEMロックを解除したら、再起動するのだが、その際に画面が暗転してから音量小キーを押し続ける。そうするとブートローダーメニューが開かれる。

https://media.giphy.com/media/LsIrL16gSsUXxYJxAP/giphy.gif
自分の端末を見せられないので代わりに別サイトの画像を掲載

この時にPCとUSBケーブルで接続し、ドライバーをインストールする。
この状態だとWindows側はPixel 5のドライバが存在しないので、何もする事が出来ない。
ここでコントロールパネルを開き、ハードウェアとサウンドの項目の中からデバイスマネージャーを開く。
Windowsの仕様でデバイスがインストールされていないデバイスは最初から展開されているので、Pixel 5を選んで右クリックし、ドライバの更新を選ぶ。
ウィザードが起動したらコンピュータを参照してドライバを検索を選び、先程展開したフォルダを選ぶ。そして次へを押すと自動的にドライバがインストールされる。
ドライバがインストールされたらコマンドプロンプトで先程展開したSDKディレクトリを開く。そしてfastboot flashing unlockを走らせる。*2
そうしたらブートローダーをアンロックされるか聞かれるので、Unlock Boorloaderを選択する。この際にデータは全て消えるので必ず作業前にバックアップする事。

Pixel 5で権限を取るまで

ブートローダーをアンロックしたら、次は純正ファームウェアをDLする。DLはGoogle公式から出来る。後々Pixel 5本体でboot.imgを書き換えるためPixel 5本体にDLする事を推奨する。
この際、現在インストールされているファームウェアと同じバージョンをDLする。(1敗) 現在インストールされているファームウェアのバージョンは設定のデバイス情報から確認する事が出来る。
次に今DLしたファームウェアを展開する。展開したフォルダの中にあるimage-redfin(略)も展開する必要がある。展開自体はFiles(プリインストールされているGoogleエクスプローラーのような物)で展開出来る。
権限を取る上で最重要ファイルがこの中にあるboot.imgである。(これ以外のファイルは基本使わない)
そしてGitHubからMagisk Manager CanaryをDLし、インストールする。
インストールが終了したら早速開き、右上の歯車アイコンから更新チャンネルをCanaryにする。
https://img.gadgethacks.com/img/original/73/98/63739926741498/0/637399267414987398.jpg
f:id:backslash-root:20210811020347p:plain
その後Magiskのインストールを選び、パッチするファイルの選択をタップするとどのファイルを選ぶかの画面が出てくるので、先程展開したファームウェアのフォルダにあるboot.imgを選択する。

f:id:backslash-root:20210811021420p:plain
権限を取った後にSSを撮っているので選択肢が増えているが選択肢自体は変わらない
f:id:backslash-root:20210811015325p:plain
ここにあるboot.imgが必要なファイルとなる これ以外は基本使わない

そうしたらダウンロードフォルダ(PC上からだとDownloadフォルダにある)にあるmagisk_patched_AcdTr.imgをPCにコピーする。
f:id:backslash-root:20210811022259p:plain
そしてコマンドプロンプトSDKディレクトリを開き、Pixel5のブートローダーに入った後にfastboot flash boot (さっきコピーしたmagisk_patched_AcdTr.imgのフルパス)を走らせ、boot.imgを焼き直す。
この時間違って別バージョンのROMを使って文鎮化した場合はSDKで本来のバージョンのROMを焼き直す事で復旧出来る。(恐らく手順的にboot.imgだけ焼き直したら復旧する なお一度文鎮化した時は全部焼き直して復旧した)
これで何事も無く無事起動したらroot化の成功である。

SafetyNetを突破するまで

ここまで来たらroot化は完了しているが、ここから先はroot化すると使えなくなるアプリを使えるようにする小細工をする。
そもそもSafetyNetとは、技術的な詳細はAndroid Developersに投げるが、要点だけを言うと「Androidが改造されているかを確認するAPI」である。
この改造にはRoot化も含まれており、一部アプリ*3はこのSafetyNet APIを使っており、これが機能すると起動自体しなくなったりエラーが出て弾かれたりする。
しかしこの小細工をすると、アプリ側にSafetyNetを通過したという情報を渡して正常に使う事が可能となる。

:この工程は書いた自分でもあんまりよく分かってないので自己責任で行う事 よく分からないまま触ってたら突破出来たのでその状況を再現する手法に過ぎません

まず、先程導入したMagiskを開き、歯車アイコンからMagiskアプリを隠すを選択する。この際偽装したアプリの名前は何にするかと聞かれるが、名前は何にしても問題ない。
f:id:backslash-root:20210811123916p:plain
次に盾のマークからスーパーユーザーメニューに入り、一番上のMagiskHideを選ぶ。
f:id:backslash-root:20210811124213p:plain
そしてGoogle Play開発者サービスとSafetyNet APIを利用しているアプリのチェックボックスを全て入れる

f:id:backslash-root:20210811134321p:plain
今回は例としてradikoを選択している

次にパズルのピースのアイコンを選び、右下の虫眼鏡のマークからモジュールの検索モードに入り、MagiskHide Props Configを検索してインストールする。

f:id:backslash-root:20210811134815p:plain
下向き矢印を選ぶとインストールが出来る

前はMagiskHide Props Configだけ入れたら良かったのだが、2021年1月の仕様変更によりMagiskHide Props Configだけでは突破出来なくなっているので、これとは別にUniversal SafetyNet fixを導入する必要がある。
まずGitHubから最新版をPixel 5にDLし、Magiskのモジュール画面からストレージからインストールを選択し、先程DLしたUniversal SafetyNet fixをインストールする。

f:id:backslash-root:20210811135714p:plain
他に色々入ってるけどこれらは権限を取った後に入れますか?って言われて入れたやつ 必要かどうかは分からん

そして次に端末エミュレーターを導入する。今回はTermuxを使用する。suコマンドが使えれば恐らく何でもよいのでこの辺はお好みで。
Termuxを起動したらsuを実行し、権限昇格する。この時権限昇格しますかと聞かれるので、許可を選ぶ。
次にpropと入力し、MagiskHide Props Configを呼び出す。
f:id:backslash-root:20210811141131p:plain
MagiskHide Props Configを呼び出したら、1を入力して端末のFingerprint*4を編集する。
f:id:backslash-root:20210811141415p:plain
Edit fingerprintの設定画面を開いたらsを入力してBoot stagesメニューに入る。
f:id:backslash-root:20210812002335p:plain
そして2を入力し、Security patch dateを選択する。
f:id:backslash-root:20210812003344p:plain
最後にpを入力してpost-fs-dataに書き換える。
f:id:backslash-root:20210812010442p:plain
そうすると再起動するかどうかを求められるので再起動したらfingerprintの小細工は終わりとなる。
f:id:backslash-root:20210812010548p:plain

再起動してMagiskを開くとSafetyNetのチェックという項目からSafetyNetを突破出来ているかを確認出来るので、ちゃんと突破出来ているか確認する。

f:id:backslash-root:20210812010831p:plain
突破が出来ていればこのように表示される

ここまでの作業を行う事でようやくroot化した端末でradiko三井住友銀行アプリなどが利用出来るようになる。
今回の環境ではMagiskが旧来のSuperSUのように権限昇格の管理するアプリになるため、特にrootマネージャーのようなアプリを入れる必要は無い。
Magiskだけでroot化やSafetyNetの突破が出来ているか怪しいと思う場合はRoot Checkerなどで確認する事が出来る。

権限を取った後の注意事項

5chのPixel 5スレで報告があったようにPixel 5側からのアップデートが不可能になり、一々PC経由でROMを焼く必要が出てくる。
この際全部焼き直す(≒ファクトリーリセットを挟む?)必要があるのかは不明だが、アップデートが不便になるという事になる。
この点については後日調査をしてその結果を追記する ……かもしれない。
追記:普通にアップデート出来ました。ただしboot.imgも同時に焼き直されるため権限の再取得が必要になります。
また、権限を取るという事はシステム面に改造を加えるという事になるのでキャリアからの一部サポートは拒否される可能性がある。


それでは良きPixel 5ライフを!

*1:Pixel以外のAndroid端末にもあるのかは不明

*2:パスを通している場合はディレクトリを変えなくても機能する

*3:普段使ってるやつでSafetyNetを使っているやつはradiko三井住友銀行アプリで確認している

*4:ざっくり言うと証明書の一種のはず