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が良いかと思います。
また正規のROMイメージを解凍して「system.img」だけ取り出しておいてください。
TWRPのインストール
bootloaderをアンロックして、カスタムリカバリをインストールします。アンロック方法は省略します。アンロックするとユーザーデータがすべて消えるので気をつけてください。
最新版を入れておけば良いかと思います。
ブートローダーを起動してから以下。
fastboot flash recovery twrp-3.0.2.0-XXXXXX.img
インストール
この操作を行うとインストール済アプリの設定が消えます。Titanum Backupなどのバックアップソフトを使用したり、/data/dataを予め安全な場所(/sdcard等)にコピーしておくなど、作業開始前に必要なデータを必ずバックアップしてください。*1
- Androidを起動した状態で、AOSPのROM.zip、Google Appsのzipをそれぞれコピーする。
- ブートローダーを起動する。
- 正規ROMを使い「fastboot flash system system.img」で/systemを初期化する。
- カスタムリカバリを起動する。
- /system をWipe(初期化)しない!
- /data をWipeする(初期化)*2
- AOSP ROMのzipをインストールする。
- Google Appsのzipをインストールする。
- リカバリ上で/systemをマウントして /system/xbin/su /system/bin/su*3を削除する。
- 再起動する。
SafetyNet対応アプリなどが起動するか確認してみてください(SafetyNet Playground等。SafetyNet helperは安定性が悪い……)。
suhideの導入
ついでにsuhideも導入します。以下は手順だけです。
以下の2つのファイルを、予め本体にコピーしておきます。
- systemless対応の*4SuperSUとしてAroma版SuperSU*5
- suhideの最新版
作業は以下の通りです。
- /system/xbin/su を削除(/system/bin/suもあれば削除)
- カスタムリカバリに移動。
- SuperSU 2.78 SR1以上をsystemlessとして導入。
- suhideを導入。
- Androidを起動したら「suhide GUI」というアプリをGoogle play storeからインストール。
- suhide GUIで「Google開発者サービス」をチェック(非root化)。
参考。
SefetyNetを通過するために
だいたい上の方法でAOSP ROMで2~3度SafetyNetを通過したのですが、再現性がなく諦めました。
結局、Google配布の正規ROMイメージ(Andoid 6.0)をそのまま使いました。ただGoogle謹製アプリが色々と邪魔だったので、正規ROMの /system 展開後に Open Google Apps nano のイメージを追加展開しました。
すると、Google+等の余計なサービスを削除することができ、しかも「SafetyNet」を通過させることができました。
その他
- Factory Images for Nexus Devices …… NexusシリーズのFactory Image
- ImageExtractor …… system.img等の解凍/再圧縮
メモ
- userdata.imgの中身は空っぽ。