@port139 Blog

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

Android で LINE のバックアップをリストアする

adb backup を使えばアプリケーションのバックアップを取ることができ、バックアップしたデータは adb restore コマンドを使うことでリストアできます。

通常はバックアップを取得した実機へバックアップデータをリストアする事になりますが、いま使っている実機環境はそのままにしておき、別の Android 端末へリストアできれば便利ではないでしょうか?

Android SDK には Android Virtul Devicesという機能で仮想的な Android デバイスを作成し、エミュレータとして使う事ができます。この仮想 Android マシンにバックアップデータをリストアできれば、実機はそのままで、別環境上でバックアップデータの内容を読むことができるかもしれないと考えたわけですが、結論から言えばそうは問屋が卸さないという状況です。

adb backup コマンドで一括作成したバックアップファイルは android backup extractor に添付されている adb-split.sh スクリプトを使うことでパッケージ単位に分割できます。

例えば LINE であれば、jp.naver.line.android.ab というファイルに分割してくれますので、このバックアップファイルだけをエミュレータにリストアすれば良いという事になります。

しかし、実際にリストアしてみたところ、LINEの起動段階でエラーになってしまいアプリケーションを起動する事ができません。LINE の APK ファイルを adb install でインストールし、LINE アプリケーションがエミュレータ上で起動する事は確認できるのですが、adb backup で作成したバックアップをリストアするとエラーにより起動できなくなるのです。

少し調べてみたところ、どうやら Android ID という機器に固有の番号?による認証が入っているようで、その情報が一致しないことでアプリケーションがエラーになるようです。

【要root】LINEを丸ごとリストアする方法
http://reindex.hotcom-web.com/archives/252

Titanium BackupでAndroid IDだけを復元する方法
http://androidpeenats.blogspot.jp/2013/05/titanium-backupandroid-id.html

 理論的には、Android ID をバックアップし、それをエミュレータの Andorid へリストすればいけそうに思えますが、そもそも実機側で Android ID をバックアップする必要があります。

Android ID を root なしでバックアップできるのか?という点が未確認ですので、もし root なしでバックアップが可能であり、かつエミュレータにリストアできれば少し進展させる事ができるかもしれませんね。