【追記あり】「suhide」を使ってアプリのroot化端末チェック(SafetyNet)を回避する方法(Xposedも動作可能)

Android PayやPokemon GO(ポケモンGO)など一部のアプリはroot化チェックを行っており、root化された端末では動作しないようになっています。
そのチェックを回避し、アプリを動作させる「suhide」の使用方法を説明します。

Magiskより多くのアプリが動作し、Xposedを導入していてもPokémon GOが動作します。
  1. システム改変(root化)をチェックする「SafetyNet API」
  2. SafetyNetは「suhide」で回避可能
  3. Magiskと比べたsuhideの利点
    1. suhideの欠点
  4. suhideの制約
    1. root権限を保ったまま回避できるわけではない
    2. サポートはAndroid 6.0以上
    3. "systemless root"が不可能な端末では使えない
    4. カスタムリカバリ(TWRP 3.0.2以上)を起動できる必要がある
  5. suhide導入に必要な準備
    1. 必ずバックアップを!
    2. システムを初期状態に戻す
      1. 方法①:ファクトリーイメージを使う
      2. 方法②:ROMをインストールし直す
      3. 方法③:手動で元に戻す
    3. 「提供元不明のアプリ」をONにしておく
    4. 必要なファイルを用意
      1. suhide本体
      2. root化ファイル
      3. 切り替えアプリ(RootSwitch)
      4. Xposedファイル(suhide導入後にXposedを利用する場合)
  6. suhideを導入する
    1. システム領域内の「su」を削除
    2. ルートディレクトリの「supersu」を削除
    3. suhide本体とroot化zip、Xposed(本体+Magisk)をインストール
    4. Xposed管理アプリをインストール
  7. suhideの設定
    1. 方法①:suhide GUIで設定
      1. suhide GUIのインストール
      2. suhideのアプリ指定を行う
      3. suhideのアプリ指定を解除する
    2. 方法②:コマンド入力で設定
      1. ターミナルアプリのインストール
      2. アプリのUIDを確認する
      3. suhideのアプリ指定を行う
      4. suhideのアプリ指定を解除する
    3. 補足:指定した「UID」はどこに保存されているのか?
  8. 追記:Root Switchの設定と使い方
    1. RootSwitchをインストール
    2. RootSwitchでroot/非rootを切り替える
  9. 追記:06suhideの設定
  10. suhideを更新するときは
  11. suhideを削除するときは
  12. まとめ
  13. 参考情報
2016/10/31…Root Switchについて追記
2016/10/19…「06suhide」について追記
2016/10/8…アプリ指定に関する記述を変更

システム改変(root化)をチェックする「SafetyNet API」

Android PayやPokémon GOでは「SafetyNet API」という厳しいシステム改変・rootチェック機構が使用されています。

詳しくは下記の記事を参照してください。

SafetyNetは「suhide」で回避可能

このようにシステム改変をチェックする機構であるSafetyNetですが、実は回避する方法があります。

それが「suhide」です。

これは、システム領域(/system)を改変すること無く、特定のアプリが起動した時のみ非rootとしてSafetyNetに認識させるものです。

これを使うことで、端末がroot化されていてもアプリを動作させることができるというわけです。

Magiskと比べたsuhideの利点

「suhide」と同じようなものに「Magisk」があります。Magiskはこちらの記事で紹介しているのでご存じの方もいるかもしれません。

基本的にはMigiskとsuhideは同じですが、以下のような点でsuhideが優れています
  1. 自動切り替え機能がある
    suhideは自動切り替え機能を備えており、指定アプリを起動した際に自動的に非rootへ切り替えてくれます。
    ※Magiskでも「AutoMagisk」というアプリを別途導入すれば同じことができます。

    →SafetyNetの強化により、自動切り替えはできなくなりました。
  2. 「Magisk」で動かないアプリでも動かすことが出来る
    Magiskでは動作しないアプリも、suhideでは動作することが出来ます。
    ※全てのアプリが動くわけではありません。
    ※Pokémon GOはMagisk / suhideのどちらでも動作可能です。
  3. Xposedが導入されていてもPokémon GOが動く
    MagiskではXposedが導入されているとPokémon GOが動作しませんが、suhideでは動作します。(バージョン0.39.0で動作確認済み)
このようにMagiskを上回る利便性を誇るsuhideですが、「suhideの制約」に示す通り、OSバージョンの制限がMagiskより厳しくなっています。

suhideの欠点

欠点というか不便な点ですが、suhideにはOS上から操作可能なアプリが用意されていません。
そのため、どのアプリを起動した際に非rootに切り替えるのかを、コマンド入力によって指定する必要があります。
また、指定にはアプリの「UID」を特定する必要があります。

ここに関しては、全てアプリ上で完結するMagiskと比べるとかなり面倒です。

→簡単に設定可能な「suhide GUI」というアプリがリリースされました。

suhideの制約

非常に便利なsuhideですが、いくつか制約があります。

root権限を保ったまま回避できるわけではない

注意して欲しいのが、「root権限を維持したままチェック回避できるわけでない」という点です。

suhideはあくまでも「root/非root」を自動的に切り替えるものです。

非root切り替え中はチェックを回避できますが、一方で端末全体が完全に非root状態となります。その間、root権限が必要なアプリは当然動作しません。

再びrootへ切り替えればもちろん動作しますが、suhideでは「チェック回避が必要なアプリとroot権限が必要なアプリは同時動作できない」ということを覚えておいて下さい。

サポートはAndroid 6.0以上

suhideはAndroid 6.0以上をサポートしているので、それ未満のバージョン(Android 4.4など)では動作しません

MagiskはAndroid 5.0以上だったので、それより厳しくなっていますね。

ただし、この点に関しては今度のアップデートで変更される可能性があります。

"systemless root"が不可能な端末では使えない

suhideはroot/非rootを切り替えるもので、単体ではroot化出来ません。別途、自分でroot化する必要があります。

しかしながら、単にroot化すればいいわけではなく、"システムを改変しないように"行う必要があります。これを"systemless root"(システムレス ルート)と言います。

また、「SuperSU v2.78 SR1」以上を使用するように指定されています。

systemless rootは、システム領域(/system)ではなくカーネル領域(boot)を利用することでroot化を行います。
そのため、カーネル領域を変更できない端末ではsystemless rootが出来ないため、suhideを使うことが出来ません。


systemlessが不可能な端末としては、国内版Xperiaが挙げられます。
国内版Xperiaはブートローダーがアンロック出来ないため、いわゆる"prerooted.zip"をカスタムリカバリから導入し、ROMごと入れ替える形でroot化を行います。これ以外の方法でのroot化は不可能なようです。

なお、海外版では使用可能です。(アンロックし、systemless rootを行える状態の場合)

(筆者はXperiaを所有してないため、もしかしたら間違っているかもしれません。その際はコメント欄よりご指摘頂けるとありがたいです。)


※ブートローダーがアンロックできない端末全てがsystemless root不可能なわけではありません!アンロックしていなくてもカーネル領域を変更できれば可能です。(ASUS ZenPad 8.0など)

カスタムリカバリ(TWRP 3.0.2以上)を起動できる必要がある

suhide導入のためにカスタムリカバリを起動する必要があります。
また、カスタムリカバリは「TWRP」のバージョン3.0.2以上である必要があります。

カスタムリカバリが無い(もしくは、起動できない)端末では導入できません

カスタムリカバリについて詳しくはこちらの記事を参照して下さい。

suhide導入に必要な準備

まずは導入準備として以下の作業を行います。

必ずバックアップを!

suhideはシステムを改変しませんが、カーネルなど端末の重要な部分を変更します。最悪の場合、環境によっては端末が起動しなくなることも考えられます。
導入する前に、いつでも戻せるように予めカスタムリカバリ等でシステムのフルバックアップを必ず取って下さい。

カスタムリカバリ(TWRP)でバックアップを行う方法はこちらの記事を参照して下さい。

システムを初期状態に戻す

suhideを導入する前に、一旦端末を非root化し、システムを初期状態(改変されていない状態)にする必要があります。
システムが完全に初期状態でないとsuhideを導入できません。(導入しても機能しない)

初期状態に戻す方法をいくつか示します。下記方法を参考に初期状態にしてください。

方法①:ファクトリーイメージを使う

メーカー公式ROMを使用している場合、可能ならばバックアップ後にファクトリーイメージを用いて工場出荷状態に戻して下さい。(システム領域のみ戻せばOK)

Nexus端末へのファクトリーイメージの書き込み方法はこちらの記事を参照して下さい。

方法②:ROMをインストールし直す

カスタムROMを使用している場合、バックアップ後に現在のROMを一旦削除(フルWipe)し、新規インストールし直してください。

なお、最初からroot化されているカスタムROMの場合、一旦「/system/bin/su」及び「/system/xbin/su」を削除する必要があります。
詳しくは「suhideを導入する―システム領域内の「su」を削除」で述べます。

方法③:手動で元に戻す

上記2つとも不可能な場合、手動でシステム領域を全て元に戻して下さい。

まず、Xposedを導入している場合はuninstall.zipをカスタムリカバリからインストールし、削除してください。(詳しくはこちら

また、既にSuperSUなどでroot化している場合は必ずroot権限を削除(アンルート)してください。
SuperSUを開き、「設定」タップ、少し下にスクロールして「ルート権限を破棄 (アンルート)」をタップして下さい。
「続行」をタップし、bootイメージを復元で「はい」をタップ、recoveryイメージの復元で「いいえ」をタップして下さい。
端末が自動的に再起動され、非root化されているはずです。

「提供元不明のアプリ」をONにしておく

事前に、「設定」アプリの「セキュリティ」の「提供元不明のアプリ」をONにしておいて下さい。
これを行わないと、アプリをインストールできません。
「提供元不明のアプリ」をONにする

必要なファイルを用意

以下のファイルの最新版端末内部ストレージのわかりやすい場所に配置して下さい。
  1. suhide本体
  2. root化ファイル
  3. 切り替えアプリ(Root Switch)
  4. 任意:Xposedファイル

suhide本体

suhide本体のzipファイル(カスタムリカバリから導入)です。

こちらのページの一番上の投稿にある「Attached Files」より最新のファイルをクリックし、ダウンロードし、端末内に配置して下さい。
  • 本体:suhide-v0.55.zip
    ※更新等によりファイル名が異なる場合あり
    最新のファイルをクリックしてダウンロード

root化ファイル

suhide単体ではroot化できないため、別途自分でroot化する必要があります。必ず"systemless"に対応した方法で行ってください。(システムを改変せずにroot化)

suhideの場合「SuperSU」の「2.78 SR1」以上を使うように指定されています。

今回は、「SuperSU 2.78 SR1」を確実にsystemlessで導入するために「SuperSU Aroma Installer」を使用します。

SuperSU Aroma Installerのzipをこちらのページの一番上の投稿「Attached Files」より「SuperSU+Aroma+2.78-SR1+v3.zip」をクリックしてダウンロードし、端末内に配置して下さい。
※v5ではインストール方法が大きく異なるため、v3を使用してください。

切り替えアプリ(RootSwitch)

SafetyNetが強化されたため、root/非rootの自動切り替えが不可能になりました。
代わりに、「Root Switch」を使用して手動で切り替える必要があります。

Root Switchのzipをこちらのページの上から二番目の投稿より「RootSwitch-1.3.3.2.zip」をクリック、ダウンロードし、端末内に配置して下さい。
より最新のものがある場合は、それをダウンロードしてください
  • RootSwitch-1.3.3.2.zip
    リンク先の上から二番目の投稿の「RootSwitch-1.3.3.2.zip」をクリックし、ダウンロード


ファイルはzip形式で圧縮されているので、解凍してapkファイルを取り出してください。
その後、端末内のわかりやすい場所に配置して下さい。

Xposedファイル(suhide導入後にXposedを利用する場合)

suhide導入後にXposedを利用する場合、systemless対応の非公式版を利用する必要があります。
非公式版の導入により管理アプリの見た目が大きく変わりますが、基本的な機能は公式版と同じです。

Xposedについてはまずはこちらの記事を参照して下さい。その上で、記事中で使用しているファイルの代わりに以下を使用して下さい。
Root Switchを使用する場合、少し古いですがv86.2を使用して下さい。v86.2を使用する場合、Magiskの導入は不要です。

ちなみに、最新版は以下で配布されていますが、インストールにはMagiskの導入が必須です。
Magiskを導入してしまうとRoot Switchが動作しない(切り替えても回避できない)のでこちらは使用しないでください。
また、上記systemless対応版XposedのインストールにはMagiskが必要となります。(本体のみで可。管理アプリは不要)
こちらも最新のファイルをダウンロードし、端末内に配置して下さい。

suhideを導入する

それでは実際にsuhideを導入していきます。

導入は以下の様な流れで行います。
  1. システム領域内の「su」を削除
    ※最初からroot化されているカスタムROMのみ(CyanogenModやResurrection Remixなど)
  2. ルートディレクトリの「su」と「supersu」を削除
  3. suhide本体とroot化zip、Xposed(本体+Magisk)をインストール
  4. Xposed管理アプリをインストール
  5. suhideの設定
  6. 追記:Root Switchの設定と使い方
  7. 追記:06suhideの設定
1に関して、「後からroot化するカスタムROM」や「メーカー公式ROM(非root)」を使用している場合は不要です。

また、全体を通してですが、Xposedは必須ではありません。suhide導入後に使用しない場合は無視してください。

システム領域内の「su」を削除

※本作業は、「最初からroot化されているカスタムROM」(CyanogenModやResurrection Remixなど)の場合のみ必要です。それ以外の場合は行う必要はありません。

まずは、以下の示すシステム領域内にあるrootファイル「su」を削除します。これにより、カスタムROMであっても端末を完全に非root化します。
  • /system/bin/su
  • /system/xbin/su
削除はどのような方法でも構いません。OS起動中にroot対応ファイラーアプリ(ESファイルエクスプローラなど)で削除しても良いですし、adbコマンドを使っても良いです。

今回は例として、「システムを初期状態に戻す ― ROMをインストールし直す」に書いた"カスタムROMの新規インストールし直し"の直後を想定し、カスタムリカバリ(TWRP)上で削除します。
  1. 左下から1つ上の「Mount」をタップする
  2. 上の「system」をタップし、チェックを付ける
    ※左下の「Mount system partition read-only」のチェックは外す
  3. 下中央のホームボタンをタップし、TWRPのメニュー画面に戻る
  4. 左下の「Advanced」をタップする
  5. 右上から1つ下の「File Manager」をタップする
  6. 端末内のフォルダが表示されるので、少し下にスクロールし「system」をタップして開く
  7. 「system」フォルダが表示されるので、「bin」をタップして開く
  8. 「bin」フォルダが表示されるので、少し下にスクロールし「su」をタップして選択する
  9. 左上のファイル名(/system/bin/su)を確認し、左下の「Delete」をタップしてファイルを削除する
  10. Swipe to Confirm」を右にスワイプして削除を実行する
  11. 上に「Succeful」と表示されていることを確認し、左下の「Back」をタップして戻る
  12. 「su」ファイルが削除されていることを確認し、一番上までスクロールし「(Up A Level)」をタップして1つ上に戻る
  13. 「system」フォルダが表示されるので、少し下にスクロールし「xbin」をタップして開く
  14. 「xbin」フォルダが表示されるので、少し下にスクロールし「su」をタップして選択する
  15. 左上のファイル名(/system/xbin/su)を確認し、左下の「Delete」をタップしてファイルを削除する
  16. 上に「Succeful」と表示されていることを確認し、左下の「Back」をタップして戻る
  17. 「su」ファイルが削除されていることを確認し、下中央のホームボタンをタップしてTWRPのメニュー画面に戻る
これでシステム領域内の「su」を削除し、カスタムROMを完全に非root化することができました。

ルートディレクトリの「supersu」を削除

内部ストレージのルートディレクトリ(一番上のフォルダ)に「supersu」フォルダが存在していると、suhideを導入することが出来ません。(弾かれてしまう)

そのため、事前に手動で「supersu」フォルダを削除しておく必要があります。

※過去に一度でもSuperSUを使用したことのある端末は「supersu」フォルダが残っている可能性が非常に高いので、念のためこの作業を行って下さい。

以下に示すrootフォルダ「supersu」を削除します。
※フォルダが存在しない場合はそのままでOKです。
  • /supersu
削除はどのような方法でも構いません。OS起動中にroot対応ファイラーアプリ(ESファイルエクスプローラなど)で削除しても良いですし、adbコマンドを使っても良いです。

今回は例として、「システムを初期状態に戻す ― ROMをインストールし直す」に書いた"カスタムROMの新規インストールし直し"の直後を想定し、カスタムリカバリ(TWRP)上で削除します。
  1. 左下の「Advanced」をタップする
  2. 右上から1つ下の「File Manager」をタップする
  3. 端末内のフォルダが表示されるので、少し下にスクロールし「supersu」をタップして開く
    ※一番上のディレクトリが表示されていない場合は、一番上の「(Up A Level)」を何回かタップして戻って下さい
  4. 右下のアイコンをタップしてメニューを開く
  5. 左上のフォルダ名(/supersu)を確認し、左下の「Delete」をタップしてファイルを削除する
  6. Swipe to Confirm」を右にスワイプして削除を実行する
  7. 上に「Succeful」と表示されていることを確認し、左下の「Back」をタップして戻る
  8. 「supersu」フォルダが削除されていることを確認し、下中央のホームボタンをタップしてTWRPのメニュー画面に戻る
これでsuhideをインストールできるようになりました。

suhide本体とroot化zip、Xposed(本体+Magisk)をインストール

カスタムリカバリからsuhide本体とroot化zip、Xposed(本体+Magisk)をインストールします。
※必ず「root化zip」→「suhide本体」の順にインストールして下さい。先にroot化されていないと、suhideをインストールすることができません。
  1. カスタムリカバリを起動する
    ※今回はTWRPを使用
  2. 左上の「Install」をタップする
  3. フォルダ名をタップし、「必要なファイル」を配置してあるフォルダまで移動する
    ※今回は「Download」に配置
  4. Xposedのインストール:Magiskのzip(「Magisk-v6.zip」)をタップする
    ※この作業は任意です。Xposedを使用しない場合は手順6へ進んで下さい。
    →Root SwitchはMagiskが導入されていると正しく動作しないので、導入しないでください。
  5. Xposedのインストール:下の「Add more zips」をタップする
    ※この作業は任意です。Xposedを使用しない場合は手順6へ進んで下さい。

  6. root化zip(「SuperSU+Aroma+2.78v2.zip」)をタップする
    ※更新等によりファイル名が異なる場合あり
  7. 下の「Add more zips」をタップする
  8. suhide本体(「suhide-0.53.zip」)をタップする
    ※更新等によりファイル名が異なる場合あり
  9. 下の「Add more zips」をタップする
  10. Xposedのインストール:Xposedのzip(「xposed-v86.2-sdk23-topjohnmu.zip」)をタップする
    ※画像ではv86.5ですが、Magiskが不要なv86.2を使用してください。
    ※この作業は任意です。Xposedを使用しない場合は手順11へ進んで下さい。
  11. 下の「Swipe to confirm Flash」を右にスワイプし、インストールする
  12. root化zipのAroma Installerが起動するので、「Systemless」をタップし、右下の「Next」をタップする
  13. Install SuperSU」をタップする
  14. suhideをインストールするか聞かれるが、「No」をタップし、右下の「Next」をタップする
    ※suhideのバージョンが古いため、ここではインストールしないで下さい
  15. インストールが始まるので、しばらく待つ
  16. インストールが終了したら、右下の「Next」をタップする
  17. 右下の「Finish」をタップして終了する
  18. 一番下に「Done」と表示されて正しく完了したことを確認し、「Reboot System」をタップして再起動する
これでsuhide本体とroot化zip、Xposed(本体+Magisk)のインストールが終わりました。

Xposedを使用しない場合は、これで完了です。
既にSafetyNetが回避できるようになっているはずなので、実際にアプリを起動して動作を確認してみて下さい。
→下記の「suhideの設定」の作業も行って下さい。

Xposed管理アプリをインストール

最後に、Xposed管理アプリをインストールします。
※この作業は任意です。Xposedを使用しない場合は次の手順へ進んで下さい。
  1. ファイラーアプリで端末の内部ストレージを開く
    ※今回はASUS File Managerを使用
  2. 「必要なファイル」を配置してあるフォルダまで移動する
  3. Xposedのインストール:「XposedInstaller_by_dvdandroid.apk」を開く
    ※更新等やAndroidバージョンによりファイル名が異なる場合あり
  4. 右下の「インストール」をタップし、アプリをインストールする
  5. 左下の「完了」をタップする
Xposedアプリについてここでは特に説明しませんが、デザインが大きく変更されている以外は従来のアプリと同様の機能・操作です。

Xposedについてはこちらの記事を参照して下さい。

suhideの設定

SafetyNetでは各アプリがチェックを行っているのではなく、「Google Play開発者サービス」が行っています。

そのため、Google Play開発者サービスを回避対象として指定する必要があるのですが、こちらはsuhideのインストール時点で自動的に指定されています。
ということで、SafetyNetのみを回避する場合には、この作業を行う必要はありません。Android PayやPokémon GOはsuhideを導入した段階で既に動作可能になっているはずです。
→自動的に指定されていない場合があるようです。念のため、この作業も実施し「Google Play開発者サービス」を指定して下さい。

その上で、SafetyNetとは関係なく特定のアプリ起動時に非rootとして認識させたい場合には、suhideでアプリを個別に指定する必要があります。

指定にはインストール時にアプリごとに割り当てられた「UID」を使用します。
これを行うことで、そのアプリを起動した際に端末が自動的に非root化されます。

~2016/10/12追記~
v0.55よりプロセス名による指定も可能となりました。(作者の方はUIDによる指定を推薦)

アプリ指定には以下の2通りの方法があります。

方法①:suhide GUIで設定

画面上で簡単に指定/指定解除ができる「suhide GUI」というアプリを使用します。
コマンドの入力不要、アプリ上でタップするだけなので、基本的にはこちらをオススメします。

suhide GUIのインストール

  1. 「suhide GUI」のGoogle Playストアページを開く
  2. インストール」をタップする
  3. 次へ」をタップする
  4. 「アンインストール」と「開く」が表示され、インストールできたことを確認する

suhideのアプリ指定を行う

※Google Play開発者サービスは同じUIDの複数アプリ(~など)として表示されています。指定を変更したい場合は「Google Play開発者サービス」1つだけをタップして下さい。

~2016/10/12追記~
プロセス名による指定も可能となりました。
アプリ一覧画面で右から左にスワイプすることで、プロセス名を確認・指定可能です。

  1. suhide GUI」を開く
  2. root権限の使用許可を求められるので「許可」をタップする
  3. 端末にインストールされているアプリの一覧が表示されているので、指定したいアプリをタップする
  4. チェックが入り、指定されたことを確認する
  5. 端末を再起動する

suhideのアプリ指定を解除する

アプリ指定を解除したい場合、「suhideのアプリ指定を行う」の手順2で既にチェックが入っているアプリをタップして下さい。

方法②:コマンド入力で設定

アプリ以外にコマンドでも指定が可能です。
コマンド入力(adb)が可能ならばどのような方法でも構いません。PCに接続して、コマンドプロンプトを開き、そこから入力してもOKです。

今回は、出来るだけ端末上のみで完結させるため、ターミナルアプリ(コマンドプロンプトのようなもの)を使用します。

ターミナルアプリのインストール

ターミナルアプリならどれでもOKですが、今回は「Termux」を使用します。
  1. 「Termux」のGoogle Playストアページを開く
  2. インストール」をタップする
  3. 次へ」をタップする
  4. 「アンインストール」と「開く」が表示され、インストールできたことを確認する

アプリのUIDを確認する

続いて、指定したいアプリのUIDを確認します。

UIDは5桁の数字です。
UIDはアプリのインストール時に割り当てられるので、端末1台1台ごとに異なります
そのため、使用している端末ではそのアプリのUIDが何番になっているかを確認する必要があります。
  1. 端末の「設定」アプリを開き、「アプリ」をタップし、指定したいアプリ名をタップして開く
  2. 上のアプリ名の下に書かれたパッケージ名をメモしておく
    ※Pokémon GOの場合、「com.nianticlabs.pokemongo」
  3. Termux」を開く
  4. 初回起動時のみ:「DO NOT SHOW AGAIN」をタップする
  5. 入力画面が表示されるので、「ls -nld /data/data/(アプリのパッケージ名)」と入力し、キーボードのEnterボタンをタップしてコマンドを実行する
    ※Pokémon GOの場合、「com.nianticlabs.pokemongo」と入力
  6. UID(5桁の数字)が表示されるので、メモしておく
    ※今回の場合、「10166」がUID

suhideのアプリ指定を行う

UIDを確認したら、アプリの指定を行います。

~2016/10/12追記~
プロセス名による指定も可能となりました。
手順4で「/su/suhide/add (プロセス名)」と入力することで指定可能です。
  1. Termux」を開く
  2. 入力画面が表示されるので、「su」と入力し、キーボードのEnterボタンをタップしてコマンドを実行する
  3. root権限を要求されるので、「許可」をタップする
  4. 入力画面が表示されるので、「/su/suhide/add (アプリのUID)」と入力し、キーボードのEnterボタンをタップしてコマンドを実行する
    ※今回は10166を指定
    「add」と「アプリのUID」の間の半角スペースを忘れずに
  5. 新しい行が表示され、エラー無く指定できたことを確認する
  6. 端末を再起動する
    ※再起動しないと変更が適用されません
これでsuhideのアプリ指定が完了し、指定したアプリを起動したときだけ非root化されるようになりました。実際に指定したアプリを起動し、きちんと動作するかを確認してみて下さい。

suhideのアプリ指定を解除する

アプリ指定を解除したい場合、「suhideのアプリ指定を行う」の手順4で「/su/suhide/rm (アプリのUID)」と入力して実行して下さい。

「add」(追加)と反対に削除(「rm」=remove)を行うコマンドです。

~2016/10/12追記~
プロセス名による指定も可能となりました。
手順4で「/su/suhide/rm (プロセス名)」と入力することで指定解除可能です。

補足:指定した「UID」はどこに保存されているのか?

指定したUIDですが、「/su/suhide/suhide.uid」に書き込まれています。
※OS起動状態でのみ認識可能

未検証ですが、もしかしたらコマンドを使用せずにこのファイルを直接編集してもOKかもしれません。
UIDは「/su/suhide/suhide.uid」に書き込まれている
指定したUIDが記載されている

追記:Root Switchの設定と使い方

SafetyNetが強化されたため、手動でroot/非rootを切り替えることが必要になりました。
切り替えには「RootSwitch」というアプリを使用します。

※このアプリで非rootに切り替えてもテストアプリ「SafetyNet Helper Sample」では赤表示のままですが、Pokémon GOなどのアプリは動作可能です。

RootSwitchをインストール

まずはRootSwitchをインストールします。
  1. ファイラーアプリで端末の内部ストレージを開く
    ※今回はASUS File Managerを使用
  2. 「必要なファイル」を配置してあるフォルダまで移動する
  3. RootSwitch-1.3.3.2.apk」を開く
    ※更新等やAndroidバージョンによりファイル名が異なる場合あり
  4. 右下の「インストール」をタップし、アプリをインストールする
  5. 左下の「完了」をタップする

RootSwitchでroot/非rootを切り替える

最初はroot化されているはずなので、今回は非rootに切り替えてみます。
  1. RootSwitch」を開く
  2. root権限の使用許可を求められるので「許可」をタップする
  3. 「Root」欄の「Enabled」をタップして、非rootに切り替え
  4. Disabled」と表示され、切り替えられたことを確認する
これで非rootへの切り替えができました。実際にアプリを起動して動作するか確認してみてください。

戻す際は「Disabled」をタップしてください。「Enabled」と表示され、root権限が復活しているはずです。

なお、表示の通りSELinuxが「Enforcing」に切り替えられます。切り替え中はroot権限・SELinuxがPermissiveであることが必要なアプリは動作しないので注意してください。


ちなみに、「Show switch in notification」にチェックを入れておくと通知画面にアプリを表示させておくことができます。頻繁に切り替える際は便利です。

追記:06suhideの設定

SafetyNetが強化されたため、追加の設定が必要となりました。その設定が「06suhide」というもので、コマンド入力を行う必要があります。
※この設定を行ってもテストアプリ「SafetyNet Helper Sample」では赤表示のままですが、Pokémon GOなどのアプリは動作可能となります。
→SafetyNetの強化により、意味が無くなりました(この設定を行っても回避できない)

コマンド入力はターミナルアプリで行いますが、今回は「Termux」を使用します。
  1. Termux」を開く
  2. 入力画面が表示されるので、「su」と入力し、キーボードのEnterボタンをタップしてコマンドを実行する
  3. root権限を要求された場合は、「許可」をタップする
  4. 下記のコマンドをコピーする
    echo -e '#!/su/bin/sush\nmount -o rw,remount rootfs /\nchmod 0751 /\nmount -o ro,remount rootfs /' > /su/su.d/06suhide ; chmod 0700 /su/su.d/06suhide
  5. 入力画面の適当な場所を長押しし、メニューを表示させ、「PASTE」をタップして貼り付ける
  6. コマンドが正しく貼り付けられていることを確認し、キーボードのEnterボタンをタップしてコマンドを実行する
  7. #」と表示され、コマンドがエラー無く実行されたことを確認する
  8. 端末を再起動する
これで設定が全て終わりました。Pokémon GOなどが動作できるようになっているはずなので、起動して試してみて下さい。

suhideを更新するときは

suhideの新しいバージョンがリリースされた際に更新する場合、「suhide導入に必要な準備」に書いた通り、端末を一度初期化して、最初から入れ直すことをオススメします。

それが面倒な場合や不可能な場合、「suhideを導入する」の手順をもう一度行い、上書きインストールして下さい。

※上書きインストールは思わぬ不具合が発生することがあります。その場合は、初期化の上、改めて導入して下さい。


カスタムROM等の更新(上書き含む)するとsystem及びboot(カーネル)が初期化されます。その際は、手順に従ってもう一度導入し直して下さい。

suhideを削除するときは

こちらのページの一番上の投稿「Attached Files」にある「suhide-rm-v0.51.zip」をカスタムリカバリからインストールして下さい。

まとめ

  • Android PayやPokémon GOなどは「SafetyNet API」で端末のシステム改変(root化)をチェック
    →チェックに引っかかるとアプリは動作できず
  • SafetyNetのチェックは「suhide」で回避可能
  • Magiskとsuhide違い
    • 自動切り替え機能
      →現在は手動で切り替える必要
    • Magiskでは動作しないアプリでも動作する
    • Xposedを導入していてもPokémon GOが動作する
  • suhideは以下の環境で使用可能
    • Android 6.0以上
    • systemless rootが可能(SuperSU 2.78 SR1以上)

参考情報

Powered by Blogger.