titaniumでビルドしたAPKファイルを解凍して中身をチェック
titaniumでビルドした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に入っているらしい。
これを変換するツールをダウンロードする。
- dexからjarに変換するdex2jar
pxb1988/dex2jar | GitHub - そのjarをclassに変換するjad
JAD Java Decompiler Download Mirror
ダウンロードした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 >