titaniumでビルドしたAPKファイルを解凍して中身をチェック

android_unziptitaniumでビルドしたAPKの中身がどうなっているか調査したときの覚書。

環境: Titanium SDK 3.5.1.GA

参考サイト

apkファイルはzip形式でアーカイブされているだけなので、unzipで解凍できる。
$ mkdir temp
$ cd temp
$ cp ../project/build/android/bin/hoge.apk ./
$ unzip hoge.apk

assetsディレクトリに画像やフォントファイルがそのまま出力されている。

ソースコードはclasses.dexに入っているらしい。

これを変換するツールをダウンロードする。

ダウンロードしたdex2jarを解凍。実行可能に
$ unzip dex2jar-2.0.zip
$ chmod +x dex2jar-2.0/*.sh

実行
$ ./dex2jar-2.0/d2j-dex2jar.sh classes.dex

エラー

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/googlecode/dex2jar/tools/Jar2Dex : Unsupported major.minor version 51.0

JDK 1.7でないとダメみたい。

前の記事などを参考にJDK 1.7にして再実行。
$ ./dex2jar-2.0/d2j-dex2jar.sh classes.dex

dex2jar classes.dex -> ./classes-dex2jar.jar

jarを展開
$ jar -x < classes-dex2jar.jar

ダウンロードしたjadを解凍して実行可能に
$ unzip jad158g.mac.intel.zip
$ chmod +x jad

変換実行
$ ./jad -d output -r -s java **/*.class

outputディレクトリに読めるソースコードが展開される。

titaniumで作成したjsファイルは/com/hoge/AssetCryptImpl.javaに難読化されて格納されている。

ファイル名とエンコードされたハッシュ値の範囲が書いてあるので、復元できなくもない。

難読化されているとはいえパスワードとか重要な値はソースコードに書かない方がいいみたい。

 

< Related Posts >