Android PayやPokemon GO(ポケモンGO)など一部のアプリはroot化チェックを行っており、root化された端末では動作しないようになっています。
そのチェックを回避し、アプリを動作させる「hidesu」の使用方法を説明します。システム改変(root化)をチェックする「SafetyNet API」
Android PayやPokémon GOでは「SafetyNet API」という厳しいシステム改変・rootチェック機構が使用されています。
詳しくは下記の記事を参照してください。
SafetyNetは「hidesu」で回避可能
このようにシステム改変をチェックする機構であるSafetyNetですが、実は回避する方法があります。
それが「hidesu」です。
これは、システム領域(/system)を改変すること無く、特定のアプリが起動した時のみ非rootとしてSafetyNetに認識させるものです。
これを使うことで、端末がroot化されていてもアプリを動作させることができるというわけです。
hidesuの制約
便利なhidesuですが、いくつか制約があります。
サポートはAndroid 5.0以上
hidesuはAndroid 5.0以上をサポートしているので、それ未満のバージョン(Android 4.4など)では動作しません。
Xposedは使用不可能
Xposedが導入されていると動作しません。
Xposedを削除するか、またはそもそも導入しなければ動作することが出来ます。
Xposedを利用したい場合は、こちらの記事で紹介した「suhide」を使用して下さい。
"systemless root"が不可能な端末では使えない
hidesuは導入と同時にroot化を行うのですが、システムを改変しない"systemless root"(システムレス ルート)と言う方法で行います。
systemless rootは、システム領域(/system)ではなくカーネル領域(boot)を利用することでroot化を行います。
そのため、カーネル領域を変更できない端末ではsystemless rootが出来ないため、hidesuを使うことが出来ません。
systemlessが不可能な端末としては、国内版Xperiaが挙げられます。
国内版Xperiaはブートローダーがアンロック出来ないため、いわゆる"prerooted.zip"をカスタムリカバリから導入し、ROMごと入れ替える形でroot化を行います。これ以外の方法でのroot化は不可能なようです。
なお、海外版では使用可能です。(アンロックし、systemless rootを行える状態の場合)
(筆者はXperiaを所有してないため、もしかしたら間違っているかもしれません。その際はコメント欄よりご指摘頂けるとありがたいです。)
※ブートローダーがアンロックできない端末全てがsystemless root不可能なわけではありません!アンロックしていなくてもカーネル領域を変更できれば可能です。(ASUS ZenPad 8.0など)
カスタムリカバリを起動できる必要がある
hidesu導入のためにカスタムリカバリを起動する必要があります。
カスタムリカバリが無い(もしくは、起動できない)端末では導入できません。
カスタムリカバリについて詳しくはこちらの記事を参照して下さい。
hidesu導入に必要な準備
まずは導入準備として以下の作業を行います。
必ずバックアップを!
hidesuはシステムを改変しませんが、カーネルなど端末の重要な部分を変更します。最悪の場合、環境によっては端末が起動しなくなることも考えられます。
導入する前に、いつでも戻せるように予めカスタムリカバリ等でシステムのフルバックアップを必ず取って下さい。
カスタムリカバリ(TWRP)でバックアップを行う方法はこちらの記事を参照して下さい。
システムを初期状態に戻す
hidesuを導入する前に、一旦端末を非root化し、システムを初期状態(改変されていない状態)にする必要があります。
システムが完全に初期状態でないとhidesuを導入できません。(導入しても機能しない)
初期状態に戻す方法をいくつか示します。下記方法を参考に初期状態にしてください。
システムが完全に初期状態でないとhidesuを導入できません。(導入しても機能しない)
初期状態に戻す方法をいくつか示します。下記方法を参考に初期状態にしてください。
方法①:ファクトリーイメージを使う
メーカー公式ROMを使用している場合、可能ならばバックアップ後にファクトリーイメージを用いて工場出荷状態に戻して下さい。(システム領域のみ戻せばOK)
カスタムROMを使用している場合、バックアップ後に現在のROMを一旦削除(フルWipe)し、新規インストールし直してください。
なお、最初からroot化されているカスタムROMの場合、一旦「/system/bin/su」及び「/system/xbin/su」を削除する必要があります。
詳しくは「hidesuを導入する―システム領域内の「su」を削除」で述べます。
方法③:手動で元に戻す
上記2つとも不可能な場合、手動でシステム領域を全て元に戻して下さい。
まず、Xposedを導入している場合はuninstall.zipをカスタムリカバリからインストールし、削除してください。(詳しくはこちら)
まず、Xposedを導入している場合はuninstall.zipをカスタムリカバリからインストールし、削除してください。(詳しくはこちら)
必要なファイルを用意
以下のファイルの最新版を端末内部ストレージのわかりやすい場所に配置して下さい。
- hidesu本体
hidesu本体
hidesu本体のzipファイル(カスタムリカバリから導入)です。
こちらのページの「http://phhusson.free.fr/superuser-r266-hidesu.zip」をクリックしてダウンロードし、端末内に配置して下さい。
- 本体:superuser-r266-hidesu.zip
※更新等によりファイル名が異なる場合あり
hidesuを導入する
それでは実際にhidesuを導入していきます。
導入は以下の様な流れで行います。
- システム領域内の「su」を削除
※最初からroot化されているカスタムROMのみ(CyanogenModやResurrection Remixなど) - hidesu本体をインストール
- root管理アプリをインストール
1に関して、「後からroot化するカスタムROM」や「メーカー公式ROM(非root)」を使用している場合は不要です。
システム領域内の「su」を削除
※本作業は、「最初からroot化されているカスタムROM」(CyanogenModやResurrection Remixなど)の場合のみ必要です。それ以外の場合は行う必要はありません。
まずは、以下の示すシステム領域内にあるrootファイル「su」を削除します。これにより、カスタムROMであっても端末を完全に非root化します。
- /system/bin/su
- /system/xbin/su
削除はどのような方法でも構いません。OS起動中にroot対応ファイラーアプリ(ESファイルエクスプローラなど)で削除しても良いですし、adbコマンドを使っても良いです。
今回は例として、「システムを初期状態に戻す ― ROMをインストールし直す」に書いた"カスタムROMの新規インストールし直し"の直後を想定し、カスタムリカバリ(TWRP)上で削除します。
- 左下から1つ上の「Mount」をタップする
- 上の「system」をタップし、チェックを付ける
※左下の「Mount system partition read-only」のチェックは外す
- 下中央のホームボタンをタップし、TWRPのメニュー画面に戻る
- 左下の「Advanced」をタップする
- 右上から1つ下の「File Manager」をタップする
- 端末内のフォルダが表示されるので、少し下にスクロールし「system」をタップして開く
- 「system」フォルダが表示されるので、「bin」をタップして開く
- 「bin」フォルダが表示されるので、少し下にスクロールし「su」をタップして選択する
- 左上のファイル名(/system/bin/su)を確認し、左下の「Delete」をタップしてファイルを削除する
- 「Swipe to Confirm」を右にスワイプして削除を実行する
- 上に「Succeful」と表示されていることを確認し、左下の「Back」をタップして戻る
- 「su」ファイルが削除されていることを確認し、一番上までスクロールし「(Up A Level)」をタップして1つ上に戻る
- 「system」フォルダが表示されるので、少し下にスクロールし「xbin」をタップして開く
- 「xbin」フォルダが表示されるので、少し下にスクロールし「su」をタップして選択する
- 左上のファイル名(/system/xbin/su)を確認し、左下の「Delete」をタップしてファイルを削除する
- 上に「Succeful」と表示されていることを確認し、左下の「Back」をタップして戻る
- 「su」ファイルが削除されていることを確認し、下中央のホームボタンをタップしてTWRPのメニュー画面に戻る
これでシステム領域内の「su」を削除し、カスタムROMを完全に非root化することができました。
hidesu本体をインストール
カスタムリカバリからhidesu本体をインストールします。
- カスタムリカバリを起動する
※今回はTWRPを使用 - 左上の「Install」をタップする
- フォルダ名をタップし、「必要なファイル」を配置してあるフォルダまで移動する
※今回は「Download」に配置
- hidesu本体(superuser-r266-hidesu.zip)をタップする
- 下の「Swipe to confirm Flash」を右にスワイプし、インストールする
- 一番下に「Done」と表示されて正しく完了したことを確認し、「Reboot System」をタップして再起動する
これでhidesu本体のインストールが終わりました。
root管理アプリのインストールと設定
最後に、root管理アプリをインストールし、設定します。
今回使用したhidesuのroot管理アプリは、Google Playストアに配信されています。
そのため、普通のアプリと同様にインストールします。
- 「phh's SuperUser」のGoogle Playストアページを開く
- 「インストール」をタップする
- 「同意する」をタップする
- 「アンインストール」と「開く」が表示され、インストールできたことを確認する
- そのまま「開く」をタップし、アプリを起動する
- 右上のメニューボタンをタップし、「設定」をタップして開く
- 一番上の「スーパーユーザーアクセス」をタップする
- 選択肢が表示されるので、「アプリとADB」をタップする
- 「アプリとADB」に変更されていることを確認する
これで必要なアプリを全てインストールし、準備が整いました。
実際にアプリを起動し、SafetyNetを回避できているか確認してみて下さい。
実際にアプリを起動し、SafetyNetを回避できているか確認してみて下さい。
まとめ
- Android PayやPokémon GOなどは「SafetyNet API」で端末のシステム改変(root化)をチェック
→チェックに引っかかるとアプリは動作できず - SafetyNetのチェックは「hidesu」で回避可能
- hidesuは以下の環境で使用可能
- Android 5.0以上
- systemless rootが可能
- Xposedは使用不可能
参考にした情報
- アプリのroot化端末チェック(SafetyNet)を回避する方法まとめ
同様の仕組みである「Magisk」や「suhide」に関するまとめ - phh's SuperUser/ OpenSource SELinux-capable SuperUser - Post #1063