Android
 Computer >> コンピューター >  >> トラブルシューティング >> Android

あらゆるAndroidデバイスでPlay Integrityチェックに合格する方法|Root化端末でもアプリを安全に使う

Google Play Integrity APIとは?

Googleが提供する「Play Integrity API」は、アプリのコードやそれが動作しているハードウェアの整合性を検証し、ユーザーを悪意ある脅威から守るためのセキュリティサービスです。スマートフォンのブートローダーがアンロックされていたり、Root化されていたりすると、この整合性チェックは失敗します。

その名の通り、Play Integrityはデバイスのハードウェアが安全な状態(未改造・非Root)であるかを確認し、アプリのバイナリが正規のソースから提供されているかを検証します。Googleは開発者に対してアプリ内でのPlay Integrity API利用を許可しており、セキュリティリスクを検知した際の対応は開発者自身が決定できます。

ほとんどのアプリはすべての整合性チェックに合格しなくても問題ありませんが、銀行アプリや政府系アプリなど機密性の高いデータを扱うアプリでは、チェックに失敗した端末からの利用をブロックすることがあります。ここでは、お使いのデバイスでPlay Integrityチェックが失敗する主な理由を紹介します。

  • デバイスのブートローダーがアンロック状態である
  • デバイスがRoot化されている
  • カスタムROMを使用している
  • 対策を実施してもパッチ適用済みだったり、他のモジュールと競合していたりする
  • 未署名のROMを使用している
  • MagiskのDenyListGoogleサービスが除外対象として設定されていない

Play Integrityチェックの失敗を回避するには?

Play Integrityチェックを回避するには、要件を偽装するか、チェック自体をすり抜ける必要があります。方法としては、正規の手順でデバイスを元の状態に戻す方法と、Play Integrityを欺いて「合格」の緑色チェックマークを表示させ、厳格なデバイス状態検出を行うアプリでも動作できるようにする回避用モジュールを使う方法の2通りがあります。

方法1:ストックROMに戻してブートローダーをロック(正規の方法)

Play Integrityはデバイスの状態を検証するため、最もシンプルかつ正当な方法はブートローダーを再ロックし、メーカーの純正ROM(ストックROM)を書き戻すことです。Magisk内の各種モジュールを定期的に更新し続ける手間を考えれば、これが最も確実で効果的な選択肢といえます。

また、銀行サービスがセキュリティを重視している場合は、回避策を使わないことを検討してもよいでしょう。Play Integrity関連のモジュールがパッチされた場合、金融機関側がそれを検知し、ネットバンキングなどの一部サービスをブロックしたり、最悪の場合アカウントをロックされたりする可能性があります。

方法2:Play Integrity Fixモジュール(Rootとブートローダー状態を維持)

免責事項:本ガイドで紹介する方法は、デバイスのOSやセキュリティ設定を変更するものであり、リスクを伴います。実行によりメーカー保証が無効になったり、データ消失、システム不具合、セキュリティ上の脆弱性が生じたりする可能性があります。また、一部のアプリやサービスの利用規約に違反し、アカウント停止やBANにつながることもあります。必ず自己責任で慎重に進めてください。本ガイドは教育目的のみのものであり、手順に従ったことで生じたいかなる損害・損失・法的問題についても当方は一切の責任を負いません。

MagiskでデバイスをRoot化している多くの人にとって、Play Integrity Fixは必須のモジュールです。このモジュールはPlay Integrityの制限を回避し、アプリに対してデバイスが正規の状態であるかのように偽装します。ただし、作業を始める前に、以下の項目を必ず確認しておきましょう。

事前準備

  1. 最新版のGoogle Play開発者サービスがインストールされていることを確認する。
    • Playストアへの直接リンクから、アップデートの選択肢があるか確認できます。
    • または、Playストアを開き > 右上のアカウントアイコンをタップ > 「設定」>「バージョン情報」>「Playストアの更新」と進みます。
  2. 署名済みカスタムROMを使用していることを確認する。
    • RomSignCheckアプリ(外部インストール)でROMの署名を確認できます。正常なら「ROM sign normal」、テストキーの場合は「ROM sign is testkey」と表示されます。
  3. Magiskを最新版に更新するか、旧MagiskHide機能が復活した公式Magisk Managerのフォーク版であるKitsune Maskへ切り替える。
    • KernelSUユーザーの場合は、Zygisk Nextモジュールを書き込むことでZygisk(Magiskユーザーには標準搭載)を利用可能になります。
  4. MT Managerをインストールする。Play Integrityトークン用の有効なキーボックスファイルの導入に使用します。

導入手順の概要

このセクション全体の流れとしては、Root環境下で特定のアプリが検出されないよう隠蔽し、Magiskをプロキシアプリとして偽装します。Trusted Execution Environment(TEE)が破損している場合はその修復を試み、ShamikoでZygiskを隠した後、最後にPlay Integrity Fixモジュールを書き込みます。

ステップ1:Magiskアプリを隠す

最初のアクションは、Magiskアプリ自体を隠すことです。一部のサービスは端末にインストール済みのアプリ一覧にアクセスし、Magiskを発見すると「デバイスが改造されている」と判断します。Magiskには、ランダムなパッケージIDを持つプロキシアプリに自分自身を置き換える機能が備わっています。

  1. Magiskを開き、右上の設定(歯車アイコン)をタップします。
  2. 下にスクロールして「Magiskアプリを隠す」をタップします。
  3. 名前を無関係なアプリ名に変更し、「OK」をタップします。
  4. これでMagiskは、ランダムなパッケージIDを持つ別のアプリとして偽装されました。

ステップ2:DenyListを設定する

DenyListに登録されたアプリは、Root検出からブラックリスト入りさせる対象となるサービス群です。ShamikoやMagiskHideなどのモジュールは、このリストを参照して、アプリがデバイスのRoot状態を識別できないようにブロックします。

  1. Magiskを開き、右上の設定(歯車アイコン)をタップします。
  2. 下にスクロールして「DenyListを設定」をタップします。
  3. 右上の縦三点メニューをタップし、「システムアプリを表示」を選択します。
  4. アプリ一覧からGoogle Play開発者サービスを見つけて展開し、「com.google.android.gms」と「com.google.android.gms.unstable」のトグルをオンにします。
  5. 一覧に戻り、Google Playストアを見つけて「com.android.vending」のトグルをオンにします。

注意:DenyListの設定後は、端末の設定からGoogle PlayストアとPlay開発者サービスの両方を強制停止し、データを消去してください。

ステップ3:ブートローダー状態を偽装する(TEE破損時)

Play Integrityはブートローダーの状態もデバイス整合性の判定材料とするため、こちらも偽装が必要です。

  1. Trusted Execution Environment(TEE)が破損しているかどうかを確認します。
    • Momoを入手し、TEEの状態をチェックしましょう。
  2. デバイスのTEEが破損している場合は、LSPosedモジュールを書き込む必要があります。
  3. Xposedの設定からBootloaderSpooferモジュールを有効化します。
  4. 特定のアプリからRoot状態を隠したい場合は、ここで該当アプリを選択します。

ステップ4:Zygiskを隠してPlay Integrity Fixモジュールを書き込む

残りのRoot痕跡を隠すために、MagiskユーザーはShamikoモジュールを、KernelSUユーザーはZygisk Assistantを書き込みます。

  1. chiteromanのリポジトリからPlay Integrity Fixモジュールをダウンロードします。
  2. aviraxpのリポジトリからTrickyStoreモジュールを入手します。
  3. 両方のモジュールをMagisk経由で書き込みます。

ステップ5:MT Managerで有効なキーボックスファイルを配置する

キーボックスファイルは遅かれ早かれパッチされるため、定期的な更新が重要です。これらは整合性トークンを偽装する際に使われる鍵となります。XDA、Reddit、Telegramなどのオンラインフォーラムで入手できます。

  1. MT Managerを開き、キーボックスファイルをコピーします。
  2. /data/adb/tricky_store/ディレクトリに移動し、ファイルを貼り付けます。
  3. キーボックスファイルを長押しし、「プロパティ」を開きます。
  4. 所有者(Owner)」欄にrootと表示されているので、「変更(Modify)」をタップします。
  5. 「グループ(Group)」をタップし、「root – 0」を選択します。
  6. プロパティ画面に戻り、「権限(Permissions)」の「変更(Modify)」をタップします。
  7. 「読み取り(Read)」の「その他(Other)」にチェックを入れ、「書き込み(Write)」の「グループ(Group)」のチェックを外します。
  8. OK」をタップします。
    補足:アプリがPlay Integrity APIにリクエストを送ると、秘密鍵で署名された整合性トークンが返却されます。今回の回避策では、独自の有効なキーボックスを使ってこれらのチェックを通過するトークンを作成し、アプリが「未改造・非Root環境で動作している」と信じ込むように偽装します。
  9. すべての設定が完了したらデバイスを再起動し、「Play Integrity API Checker」アプリを入手して、デバイスの整合性ステータスを確認しましょう。

著者について

あらゆるAndroidデバイスでPlay Integrityチェックに合格する方法|Root化端末でもアプリを安全に使う

Muhammad Qasim

テクノロジーとゲームへの深い愛情に突き動かされ、最新の動向を追い続けるだけでなく、執筆を通じて自らの見識を多くの人々と共有しています。本記事をはじめとする活動を通じて、専門知識を発信し、テックとゲームの世界に意味のある貢献をすることに尽力しています。

  1. Androidスマホをテレビに接続する6つの方法|ワイヤレスから有線まで徹底解説

    お気に入りのドラマや映画を大画面で楽しみたい、撮影した写真を家族や友人みんなで見たい——そう感じたことがある人は多いはずです。ゲーム好きなら、自分のプレイを大画面で披露したいと思うこともあるでしょう。現在のテクノロジーなら、それがすべて実現可能です。Androidスマートフォンをテレビに接続すれば、映画、動画、音楽、写真、ゲームまで、すべて大画面で楽しめ、友人や家族と体験を共有することもできます。 ただし、接続作業は思ったより複雑になる場合があります。スマートフォンとテレビの両方が互換性の条件を満たしている必要があるうえ、接続方法も1つではないからです。スマートフォンのブランド、内蔵されてい

  2. 【解決法】AndroidでポケモンGOのPvP(対人戦)が動作しないときの対処法

    Androidデバイスで『ポケモンGO』のトレーナーバトル(PvP)モードをプレイする際に、「攻撃ができない」「バトルの招待を受けられない」「深刻なラグが発生する」といったトラブルに悩まされているプレイヤーが少なくありません。最新のアップデートでラグ関連の問題の多くはすでに修正されていますが、一部の不具合は依然として残っています。ポケモンGOのPvPが機能しない原因とは?PvPモードは比較的新しく追加された機能のため、リリース当初にはある程度の不具合は想定されていました。開発元のNianticもラグやバグを修正するアップデートを複数回リリースしていますが、現在でも問題が解消されないユーザーから