@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

Android_ID の確認と LINE のリストア

adb backup でバックアップしたアプリケーション(例えば LINE)のデータを、adb restore で(エミュレータ上の仮想Androidへ)リストアすると、アプリケーションがエラーで起動しなくなります。

この点について、Android_ID が異なる影響を受けるといった情報もありますので、Android_ID について検索した内容をメモしておきたいと思います。

[Android]端末識別子Android_IDを変更する[要ROOT]
http://uchidak.net/change_android_id

上記URLの内容によりますと、data/data/com.android.providers.settings/databases/settings.db ファイル内に Android_ID が定義されているということです。

このファイルへのアクセスには root 権限が必要になるという事で、例えば adb backup -system コマンドでバックアップを作成してたとしても apps\com.android.providers.settings フォルダ配下に settings.db は含まれていません。

エミュレータ上のAndroidのsettings.db を確認してみたところ、secureテーブル内にandroid_id の項目があり、以下のような値が入っている事が確認できました。

"25","android_id","b80a6ca83c6effe6"

これを別の値に切り替えてみました。エミュレータ上のAndroidですので、以下のコマンドで変更されたandroid_id を確認できます。(値は適当です)

root@generic:/ # settings get secure android_id
settings get secure android_id
5cb098378611129e

contentコマンドを使い adb shell content query --uri content://settings/secure でも確認することができますね。(いずれのコマンドも、root権限がなくても実機で同様にandroid_idを確認できます)

Google Playには実機上でこの値を表示してくれるアプリケーションもあるようですね。

 ANDROID_ID

http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID

 

 さて、android_id を実機と同じに設定した状態(かつ、ネットワークは切断した状態)で、adb backup で作成した LINE のアプリケーションバックアップを、adb restore コマンドからリストアしてみたところ、LINE アプリケーションがクラッシュせずに起動する事ができました。

とはいえ、エミュレータ上の Android にはスタンプのデータなどが無いようで、トークのメッセージは読めますが、スタンプや画像は×マークのアイコン表示となり確認する事はできませんね。

追加で、LINE アプリケーションの機能を使って作成したトーク履歴のバックアップをエミュレータ上の Android にリストアしたところ、バックアップデータ内に含まれていた画像と、恐らく有料ではないスタンプはリストアされ表示できていました。

ここまでのテストで、バックアップデータを実機ではない環境で読むことが可能なことは分かりましたが、実機で読める場合にはもちろんその方が簡単ですね。

 

第4回 Androidにおけるセキュリティ設計と動作(後編)
http://thinkit.co.jp/story/2012/03/09/3467/page/0/2