備忘録

備忘録

APK(smali)を弄る

用意するもの

JDK
・apktool.jar
https://code.google.com/p/android-apktool/downloads/list

手順

# デコンパイル
1) java -jar apktool.jar d hoge.apk

# smaliを弄る
 ○弄るときに役に立つもの一覧
 ・Dalvik opecodes
  http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
 ・dex2jar
  http://code.google.com/p/dex2jar/downloads/list
 ・JD-GUI
  http://java.decompiler.free.fr/?q=jdgui
 ・Bytecode Viewer
  http://bytecodeviewer.com/

 ○javaのコードを見る
  1) hoge.apkの拡張子をzipに変更し解凍する
  2) classes.dexを取り出す
  3) dex2jar classes.dex
  4) classes_dex2jar.jarをJD-GUIで読み込む

# 再コンパイル
2) java -jar apktool.jar b hoge hoge2.apk

# 署名
3) jarsigner -sigalg SHA1withDSA -digestalg SHA1 -keystore debug.keystore -verbose out.apk test *1

# 署名の確認(必須ではない)
4) jarsigner -verify -verbose -certs hoge2.apk

# 端末にインストール
5) adb install -r hoge2.apk
(-r オプションはデータを保持してアプリのみを上書きするオプション)

debug.keystoreやjarsignerの場所がわからなければ、
Everythingのようなファイル検索アプリを利用すればOK

*1:debug.keystoreである必要はない