アプリのroot化端末チェック(SafetyNet)を回避する方法はいくつかありますが、それらの違いや導入方法についてまとめてみました。
Android Payは近距離無線通信「NFC」を用いた非接触決済で、日本で言うところの"おサイフケータイ"のようなものです。
お金のやり取りが行われるアプリなので、セキュリティ確保のため採用しているというわけです。
また、先日のアップデート(Ver 0.37.0)よりゲーム「Pokémon GO」(ポケモンGO)にも採用されました。
Pokémon GOでは位置情報偽装や内部APIへの不正アクセスなどのチート行為が問題となっており、root化端末を完全排除するという対策を講じたようです。
実際に、カスタムROM(Resurrection Remix)を導入したNexus 6Pで起動してみると、下記のようなメッセージが表示され、アプリが動作しません。
また、バージョン7よりSafetyNet回避機能自体が削除、v6以前ではSafetyNetを回避できないため、現在はMagiskを使用する意味はありません。
⇒更新により再び回避可能になりました(v11.1で確認)。
最初にアプリを指定してしまえば、後は操作不要で回避することができます。導入も本体zipをカスタムリカバリからインストールするだけと簡単です。
詳しくはこちらの記事を参照して下さい。
システム改変(root化)をチェックする「SafetyNet API」
Android向けに様々なアプリがリリースされていますが、root化チェックを行い、root化されている端末では動作しないものもあります。
その仕組みの1つに「SafetyNet API」というものがあります。
これは非常に厳しいチェック機構で、「root化されているか」だけでなく「システム自体が改変されているか」をチェックしています。
そのため、少しでもシステムが改変されていると起動できず、従来よく用いられていた「root cloak」でも回避することができません。「SafetyNet API」(「SafetyNet | Google APIs for Android | Google Developers」より) |
Android PayやPokémon GOなどで採用
このチェック機構を採用している代表的なアプリとして、決済サービスに用いられる「Android Pay」があります。Android Payは近距離無線通信「NFC」を用いた非接触決済で、日本で言うところの"おサイフケータイ"のようなものです。
お金のやり取りが行われるアプリなので、セキュリティ確保のため採用しているというわけです。
また、先日のアップデート(Ver 0.37.0)よりゲーム「Pokémon GO」(ポケモンGO)にも採用されました。
Pokémon GOでは位置情報偽装や内部APIへの不正アクセスなどのチート行為が問題となっており、root化端末を完全排除するという対策を講じたようです。
実際に、カスタムROM(Resurrection Remix)を導入したNexus 6Pで起動してみると、下記のようなメッセージが表示され、アプリが動作しません。
Pokémon GOでは「認証できませんでした」や端末がroot化されている旨が表示され動作不能に |
SafetyNetは回避可能
このようにシステム改変をチェックする機構であるSafetyNetですが、実は回避する方法がいくつか方法があります。
その多くはシステム領域(/system)を改変すること無く、特定のアプリが起動した時のみ非rootとしてSafetyNetに認識させることで回避しています。
こうすることで、端末がroot化されていてもアプリを動作させることができるというわけです。
SafetyNetの回避法と特徴
Magisk⇒更新により再び回避可能に
- Android 5.0以上で利用可能
- 簡単な設定が必要
- Xposedが動作できない
v7以降はSafetyNet回避機能が削除⇒更新により再び回避可能になりました(v11.1で確認)
当初はXposedも動作可能でしたが、SafetyNetの更新により動作不可能に。Xposedが導入されていると、SafetyNetを回避することができなくなりました。
⇒更新により再び回避可能になりました(v11.1で確認)。
最初にアプリを指定してしまえば、後は操作不要で回避することができます。導入も本体zipをカスタムリカバリからインストールするだけと簡単です。
詳しくはこちらの記事を参照して下さい。
suhide⇒回避不可能
- Android 6.0以上で利用可能
- 導入しただけでSafetyNetを回避可能(設定不要)
- Xposedが動作可能
- バージョン0.54にて回避確認済(2016/10/8時点)
→バージョン0.55+06suhideにて回避確認済(2016/10/19時点)
→バージョン0.55+Root Switchにて回避確認済(2016/10/31時点)⇒回避不可能になりました
有名な開発者であるChainfire氏が開発した方法。導入するだけでSafetyNet回避が可能と非常に簡単です。また、Xposedも動作可能です。
しかし、Android 6.0以上のみが対象となっており、動作要件が厳しいのがネックとなっています。
詳しくはこちらの記事を参照して下さい。
詳しくはこちらの記事を参照して下さい。
hidesu⇒回避不可能?
- Android 5.0以上で利用可能
- 導入しただけでSafetyNetを回避可能(設定不要)
- Xposedが動作できない
- 設定が不可能なため、SafetyNetしか回避できない
※SafetyNet以外のrootチェックを行うアプリには使えない - 現在(2016/10/31時点)は動作しない?
導入するファイルが1つだけ、かつ設定不要と非常に簡単な方法です。Android 5.0以上で導入可能と要件も低くなっています。
しかし、Xposedが動作できない、設定が不可能なためSafetyNet以外のrootチェックを行うアプリには使えないなど欠点も存在します。
詳しくはこちらの記事を参照して下さい。
詳しくはこちらの記事を参照して下さい。
現在回避可能な方法でも、今後は不可能になる可能性は十分にあります。
詳しくはこちらの記事を参照して下さい。
Root Switch
- Android 5.0以上で利用可能(Android 4.4以下でも動く?)
- 手動での切り替えが必要
- Xposedが動作可能
- systemless rootでなくて良い
※systemlessだとむしろ回避できません(対策あり) - バージョン1.3.3.2にて回避確認済(2016/11/8時点)
shakalaca氏がリリースする「Root Switch」というアプリを使用します。
手動での切り替えが必要で若干面倒ですが、systemless rootで無くて良い、Android 5.0でも動作OKなど幅広い端末で使用可能。Xposedが導入されていても回避できます。
手動での切り替えが必要で若干面倒ですが、systemless rootで無くて良い、Android 5.0でも動作OKなど幅広い端末で使用可能。Xposedが導入されていても回避できます。
詳しくはこちらの記事を参照して下さい。
アップデートなどで回避不可能になる可能性も
SafetyNet側でも対策が強化され、既にMagiskは使用できなくなり、suhideも一時的に回避不可能になりました。(0.54で再び動作)
現在回避可能な方法でも、今後は不可能になる可能性は十分にあります。