2017/01/10(火)Android AOSPイメージのインストールメモ/SafetyNetと格闘

AOSPと言って「Android Open Source Project」によって公開されたAndroidのソースファイルから、最新Version(例えばAndroid 7.0 Nougat)非対応の機種でも使えるようにビルドされたイメージが公開されています。

それをNexus 5にインストールした時(2016/10)のメモ。以下の方法を使ってもAOSP ROMを使う限りSefetyNetは通過できません。

SafetyNet APIとは

Using the SafetyNet APIというサイトに非常に詳しく説明されています。

Google Play開発者サービスが行う本体改ざん検出機能です。root化された端末などでエラーを返すようになっています。「Secure Flow」という図にありますが、Google Play開発者サービスの返す値(と電子署名)を、サービスを行うWebアプリケーション側で検証するシステムになっています。

つまりこれを突破するには開発者サービスの持つ秘密鍵が分からない限り、改ざん検出を騙す(乗り切る)必要があります。

準備

AOSP等のカスタムROMをダウンロードします。「AOSP 機種名」等で検索して出てくれば存在します。

Google Appsをダウンロードします。

Nexus5やNexus7ならばARMを選んでください。パッケージは下図を参考に。Google Playにあるものを入れてもあまり意味はないので、NanoかMicroが良いかと思います。

opengapps-package.png

また正規のROMイメージを解凍して「system.img」だけ取り出しておいてください。

TWRPのインストール

bootloaderをアンロックして、カスタムリカバリをインストールします。アンロック方法は省略します。アンロックするとユーザーデータがすべて消えるので気をつけてください。

最新版を入れておけば良いかと思います。

ブートローダーを起動してから以下。

fastboot flash recovery twrp-3.0.2.0-XXXXXX.img

インストール

この操作を行うとインストール済アプリの設定が消えます。Titanum Backupなどのバックアップソフトを使用したり、/data/dataを予め安全な場所(/sdcard等)にコピーしておくなど、作業開始前に必要なデータを必ずバックアップしてください。*1

  1. Androidを起動した状態で、AOSPのROM.zip、Google Appsのzipをそれぞれコピーする。
  2. ブートローダーを起動する。
  3. 正規ROMを使い「fastboot flash system system.img」で/systemを初期化する。
  4. カスタムリカバリを起動する。
  5. /system をWipe(初期化)しない!
  6. /data をWipeする(初期化)*2
  7. AOSP ROMのzipをインストールする。
  8. Google Appsのzipをインストールする。
  9. リカバリ上で/systemをマウントして /system/xbin/su /system/bin/su*3を削除する。
  10. 再起動する。

SafetyNet対応アプリなどが起動するか確認してみてください(SafetyNet Playground等。SafetyNet helperは安定性が悪い……)。

*1 : やらかしました……(汗)

*2 : /data/system と /data/app だけでも足りる気がしますが……

*3 : AOSP版には無い

suhideの導入

ついでにsuhideも導入します。以下は手順だけです。

以下の2つのファイルを、予め本体にコピーしておきます。

作業は以下の通りです。

  1. /system/xbin/su を削除(/system/bin/suもあれば削除)
  2. カスタムリカバリに移動。
  3. SuperSU 2.78 SR1以上をsystemlessとして導入。
  4. suhideを導入。
  5. Androidを起動したら「suhide GUI」というアプリをGoogle play storeからインストール。
  6. suhide GUIで「Google開発者サービス」をチェック(非root化)。

参考。

*4 : /systemに変更を加えずroot化できる

*5 : 通常のSuperSU 2.78はもとより、systemless対応版でも普通に導入するとsystemlessにはなりません。そのためのAroma版を使います。ご注意ください。

SefetyNetを通過するために

だいたい上の方法でAOSP ROMで2~3度SafetyNetを通過したのですが、再現性がなく諦めました。

結局、Google配布の正規ROMイメージ(Andoid 6.0)をそのまま使いました。ただGoogle謹製アプリが色々と邪魔だったので、正規ROMの /system 展開後に Open Google Apps nano のイメージを追加展開しました。

すると、Google+等の余計なサービスを削除することができ、しかも「SafetyNet」を通過させることができました。

その他

メモ

  • userdata.imgの中身は空っぽ。