どんな記事?
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とDevOptsHideやHide 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より最新のものをダウンロードしてください。
追記(2023/02/12)
本家に追従する形でUniversal SafetyNet Fix v2.4.0-MOD_1.0 がリリースされています。
追記(2023/02/10)
Universal SafetyNet Fix v2.3.1-MOD_3.0 がリリースされています。
2023/01更新およびPlayシステムアップデート後にSafetyNetやGoogle Payの認証が外れるときがあったのですが、これで解決するかな…?🤔
追記(2023/01/10)
Universal SafetyNet Fix 2.4.0にてPlay Integrity APIのチェックを通過できるようになりました。
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で検証した結果を元に執筆しています。今後も変更があれば記事を更新するので、動作しなくなってしまった場合は確認してみてください。
コメント
ゆうちょ通帳アプリはだめですが他の方法はありますか?
Pixel 7の2023/01アップデートにて、ゆうちょ通帳アプリの確認をしてみました。
MagiskのDenyListとHide USB Debug Mode (+LSPosedの対象)にしただけで起動できました。
もう一度お試しくださいませ。
root化でおサイフケータイ系のアプリが正常に使用できますか?
おサイフケータイおよびGoogle Payに「iD」「QUICPay」「Suica」「PASMO」「nanaco」「楽天Edy」を登録し、各公式アプリも入れていますがすべて使用できています。
またPayPayなどのQRコード決済アプリも使えています。
ありがとうございました!
今やってみました、suicaできるのですが、IDはできません。
iDというのは公式アプリのことでしょうか?
それとも実際に決済をするときにエラーになりますか?
クレカ会社によってはアプリが違うかもしれませんが、僕は以下のもので確認しました。
https://play.google.com/store/apps/details?id=jp.id_credit_sp2.android&hl=ja&gl=US&pli=1
使用端末やOSのバージョン、Root関連で入れているアプリなどを教えていただければ、もう少し分かるかもしれません。