Gadgets技術ネタ

Root取得したAndroidでGoogle Payや銀行アプリなどを使う方法

Gadgets
スポンサーリンク

どんな記事?

Bootloader UnlockおよびRoot化したAndroidでSafetyNetやPlay Integrityのチェックをパスして、決済系アプリやチェックの厳しいアプリを使うための手順やノウハウをまとめました。特定機種向けではなく、汎用的な内容となっています。

Google Payに登録したSuica, PASMO, QUICPay、おサイフケータイに登録したiDなどで決済できることを確認しています。またSuicaとPASMOにはGoogle Pay経由、公式アプリ経由の両方でチャージできています。

Pixel 7でRootを取得するまでの手順は以下の記事をご覧ください。

決済アプリやサブスク、ソシャゲアプリを使うためにやること

大半のアプリはRootを取っただけでも使えるのですが、決済系アプリや動画配信サービスのアプリなどは起動することができないものも多くあります。またNetflixやKyashのようにPlay ストアで検索しても結果に表示されないものもあります。

そこでMagiskのパッケージ名を変更したりDenyListを構成したり、モジュールを用いてRoot状態を秘匿することである程度はチェックを回避することができます。

Magiskを隠す

デバイスに存在するパッケージの有無でRoot状態を判別するアプリからMagiskを秘匿するため、デフォルトのcom.topjohnwu.magiskというパッケージ名からランダム生成のパッケージ名に変更することができます。Magiskの設定 → Magiskアプリを隠す、を選択します。

アプリ名はこのままでいいでしょう。

しばらく待ちます。

Magisk再起動後にアプリのパッケージIDがランダムなものになっていれば成功です!

Zygiskを有効にする

ZygiskとはMagisk v24から実装された機能で、Zygoteというプロセスの中でMagiskの一部を実行するための仕組みです。v24以前でRiruなどのモジュールを使っていた方には、Riruが担っていた機能がMagisk本体に統合されたと表現すれば分かりやすいでしょうか。
現在は大半のモジュールがRiruからZygiskに移行していますので、難しいことを考えなくてもとりあえず有効にして大丈夫です。有効にしたら再起動しましょう。

DenyListの構成

Zygiskを有効にしたら、次にDenyListを構成します。少し紛らわしいのですが、「DenyListを適用」と「DenyListを構成」は別のものなので、「DenyListを適用」を有効にせず「DenyListを構成」だけ行います。

DenyListを適用してしまうとMagiskの適用対象からも外れてしまうため、Magiskモジュールなども動作対象外となってしまいます。DenyListを適用しなくても後述のモジュール「Shamiko」と「Universal SafetyNet Fix MOD」、そしてDenyListの組み合わせで回避できますので、Shamikoのインストールとセットだと思ってください。

DenyListにはMagiskによるRoot状態を秘匿したいアプリを登録します。基本的にはGoogle Play ストアや開発者サービス、Google Payなどの決済や銀行のアプリ、NetflixなどDRMを使う動画や音楽配信アプリ、ソーシャルゲームの大半などが対象ですが、Root権限を要求しないアプリなら登録しても害はありません。もし警告が出て起動しなかったり、一瞬だけ表示されて落ちる場合はDenyListに入っているか確認しましょう。
意外にもおサイフケータイ系のアプリ、SuicaやPASMOはDenyListに追加しなくても起動しましたが、もしエラーになるアプリがあったらDenyListを疑ってください。

DenyListに登録したあと該当アプリのタスクキル → 再起動で済むものもありますが、中には再起動が必要になるアプリもあるようです。

またDenyListに登録する必要はなくても、後述のLSPosedとDevOptsHideHide USB Debug Modeが必要だったり、Hide My ApplistでMagiskやRootを使うアプリを隠さないと動作しないアプリもあります

DenyListに追加する必要があるアプリ

  • Google Play ストア
  • Google Play 開発者サービス
  • Google Play プロテクトサービス
  • Google Pay

他にも以下のようなアプリはDenyListに追加する必要がありました。
LOFTとかイオンモールアプリみたいな クソ ゴミ うんち なアプリがRootチェックしてるの笑っちゃうよね……

  • LOFT
  • えきねっと
  • イオンモールアプリ
  • セブンイレブン
  • 住信SBIネット銀行
  • Starbucks
    アプリは起動できますが、クレカからのチャージでエラーになります

警告が出ますがそのまま使えるアプリもあります。

  • 楽天ポイントカード
  • Amazon Photos
    設定の下部に警告表示

Universal SafetyNet Fix MOD

決済系のアプリを使うときは特にSafetyNetのチェックを通過することが必要です。Universal SafetyNet FixというMagiskモジュールを使うことでSafetyNetを通すことができまました。

しかし現在はSafetyNetに替わるPlay Integrityという仕組みに変更が順次進んでおり、従来のUniversal SafetyNet FixではSafetyNetのチェックを通過することができなくなります(デバイスやOSのバージョンなどによりタイミングは異なります)。事実Android 13に更新したPixel 6で2022年8月頃からGoogle Payが使えなくなり、当然Pixel 7でもそのようになりました。

Universal SafetyNet Fixの最新版は2022年06月22日にリリースされたv2.3.1ですが、このバージョンではPlay Integrityをパスすることができず、Google Payなどは使用不可能になります。

そこでXDAのスレッドに投稿されたUniversal SafetyNet Fix MODを使うことで、現状では引き続きGoogle Payなどを使用することが可能になります。XDAより最新のものをダウンロードしてください。

ちなみにこのMODは本家USNFにプルリクが出ていますが、本家作者kdrag0n氏によるとこの実装は副作用が懸念されるため本家USNFに統合するつもりはないそうです。

Shamiko

ShamikoはDenyListと組み合わせて、従来のMagisk Hideと同等の効果を発揮します。モジュールをインストールするだけでOKですが、前述の通り「DenyListを適用」していると動作しないので要注意です。
ちなみにShamikoはオープンソースではないので、TelegramやXDAではその点を気にするユーザーもいるみたいです。

Hide My Applist

Hide My Applistは指定したアプリを、別の指定したアプリから隠すために使います。例えばGoogle Play ストアに対してYouTubeを隠すと、Google Play ストアからはYouTubeが未インストールのように見えるというわけです。
Magisk本体のようにパッケージ名をランダムにすることができないアプリやLSPosedモジュールを隠すことで、Root権限を使うアプリ(Fake LocationやStorage Isolationなど)をあたかも使っていないように見せかけることができます。

v2系で開発終了がアナウンスされていましたが現在は主にTelegramでv3系の開発が進んでおり、記事執筆時点では3.0.5 Betaが公開されています。

v2系を使っていてv3系にバージョンアップする場合、事前にHMAのMagiskモジュールをアンインストールする必要があります。さもないとブートループに陥ると書いてありました

LSPosed

後述の「DevOptsHide」や「Hide USB Debug Mode」を使用するために必要です。

LSPosedはAPKを改変することなくシステムとアプリの動作を変更できるモジュールのフレームワークです。カスタムROMと違い、異なるバージョンやROMでも動作し、モジュールをアンインストールするだけで元に戻すことができます。

riruではなくzygisk向けのものをダウンロードするよう注意してください。

DevOptsHide

指定したアプリに対して、開発者向けオプションを有効にしていることを秘匿します。Hide USB Debug Modeと組み合わせて使ったりします。

Hide USB Debug Mode

指定したアプリに対して、USBデバッグを有効にしていることを秘匿します。DevOptsHideと組み合わせて使ったりします。

SafetyNet / Play Integrity のチェック

前項までのモジュール(その他以外)を入れて設定を行った場合のSafetyNet APIとPlay Integrity APIのチェック結果を紹介します。チェックには下記のアプリを用いました。

チェック結果

この状態でGoogle Payなどが使えています。

YASNAC – SafetyNet Checker


Basic integrity: pass
CTS profile match: pass

Play Integrity API Checker

MEETS_DEVICE_INTEGRITY: pass
MEETS_BASIC_INTEGRITY: pass
MEETS_STRONG_INTEGRITY: fail

MEETS_DEVICE_INTEGRITYアプリは、Google Play 開発者サービスを搭載した Android デバイスで動作しています。このデバイスはシステム完全性チェックに合格し、Android の互換性要件を満たしています。

MEETS_BASIC_INTEGRITYアプリは、基本的なシステム完全性チェックに合格したデバイスで動作しています。このデバイスは Android の互換性要件を満たしておらず、Google Play 開発者サービスの実行を承認されていない可能性があります。たとえば、認識されていないバージョンの Android を搭載している、ブートローダーがロック解除されている、メーカーによる認定を受けていない、などの場合があります。

MEETS_STRONG_INTEGRITYアプリは、Google Play 開発者サービスを搭載した Android デバイスで動作しており、システム完全性の強力な保証(ハードウェア格納型のブート完全性保証など)が存在します。このデバイスはシステム完全性チェックに合格し、Android の互換性要件を満たしています。

まとめ

この記事はAndroid 13が動いているPixel 7で検証した結果を元に執筆しています。今後も変更があれば記事を更新するので、動作しなくなってしまった場合は確認してみてください。

コメント

タイトルとURLをコピーしました