水たまりは希望を写している

Root 化済み端末 (Magisk) でアプリ・ゲームが動かないときの対処法

作成: / 更新:

1. まずはじめに――Magisk 以外を疑う

まず Magisk 以外の原因を考えた方が良い。Magisk だけが原因ではなく、下記の理由と併せてアプリがブロックしている可能性があるから。

1.1 「USB デバッグ」がオンのまま

開発者向けオプションにある「USB デバッグ」がオンのままだとアプリやゲームが弾くことがある。数えられないほどこの設定項目をチェックして起動をブロックするアプリ・ゲームがある。

おとなしく開発者向けオプションでオフにすれば解決する。もしくは、Tasker でアプリ起動をトリガーにオフにするか、そういう (特定アプリ起動中の USB デバッグを制御する) カスタム ROM を焼くか。

1.2 TWRP / Magisk / Xposed フォルダがある

どれもこれらのツールを使うと、特定の条件で内部ストレージにフォルダを生成する。これをチェックして起動をブロックしている可能性がある。TWRP なんて Android の改造にすら関係ないけど、カスタムリカバリ使っている端末なんてマトモじゃない、みたいなスタンスで弾いているんだろう。

しかし、Android 11 向けにビルドされたアプリは、そもそも内部ストレージにアクセスすることが難しいので、この手法で検知するアプリはどんどん減っていくのではないかと思われる。

1.3 IMEI 番号が正しくない

IMEI がそもそも無かったり適当な番号だったりするとエミュレータだと判定して起動をブロックするアプリ・ゲームがある。僕は MTK 機を使ったことがないから知らないけど MediaTek の SoC を採用している端末は IMEI が飛びやすいらしい (!?)

2. MagiskHide を有効化する

「MagiskHide」をオンにして、あらゆる検知から Magisk を隠せる。専門的なことはともかく、これはオンにしておいて問題ない。

まず設定から、「MagiskHide」のトグルをオンにする、そのあとスーパーユーザーのタブに移動して、MagiskHide から隠したいアプリにチェックを入れる。

こんな感じ。ちなみにウマ娘は MagiskHide するだけで動く (しないと怒られる)。

3. Magisk アプリを隠す (パッケージ名の変更)

パッケージ名が com.topjohnwu.magisk なアプリ (つまり Magisk) を検知している可能性がある。これを回避するために、Magisk にはアプリを別のパッケージ名に変更して再インストールするという機能が備わっている。「Magisk を隠す」することで、パッケージ名がランダムに置き換わるため、実質他のアプリから Magisk を検知することができなくなる。

Android 11 向けにビルドされたアプリは、そもそも限定的なパッケージリストしか取得できなくなるので、この手法で検知するアプリはどんどん減っていくはず。

それでも動かない場合

  • (古いスマホを使ってるなら) 買い替える
    • Android 9 未満の古い OS を使うな (MagiskHide が完璧に動作しない)
  • 一度アプリをアンインストールしてみる
    • 改造を検知した後、その情報を記録している可能性がある
  • SafetyNet が通ってない
    • Google Play ストア、Google Mobile Services、Google Services Framework のデータを削除してみる
    • フルワイプしてゼロから焼き直して改善しなかったら諦める。諦めも肝心

Root 化済みかどうかチェックするアプリは、上記の対策をすれば 9 割 9 分回避できるはず。むしろ僕は弾かれるアプリに遭遇したことがない。ハードウェアベースの Evaluation を採用しているアプリがどのくらいあるかは分からないよね……。

さいごに

どうせ抜け穴があるんだから意味を成さない改造検知を実装するな 😡

ブログ記事を共有 他の人にこの記事を共有