2015/12/09

反組譯 decompile/disassemble android apk

好久沒寫文章了,來補一下。
之前針對 C/C++ 寫了一篇
http://wadefs.blogspot.tw/2012/01/cc-disassembly.html

底下是我隨手亂寫的一點東西,當作關鍵字來看就好,懶得整理


https://github.com/pxb1988/dex2jar
http://sourceforge.net/projects/dex2jar/

a) Convert the code to a modifiable format.
d2j-dex2jar.sh -f -o test_apk-debug_dex2jar.jar test_apk-debug.apk
d2j-asm-verify.sh test_apk-debug_dex2jar.jar
d2j-jar2jasmin.sh -f -o test_apk_jasmin test_apk-debug_dex2jar.jar

b) edit test_apk_jasmin/a/b/Main.j

c) repack apk
d2j-jasmin2jar.sh -f  -o test_apk_jasmin.jar  test_apk_jasmin/
d2j-asm-verify.sh test_apk_jasmin.jar
d2j-jar2dex.sh  -f -o classes.dex test_apk_jasmin.jar
cp test_apk-debug.apk test_apk-debug-toast.apk
zip -r test_apk-debug-toast.apk classes.dex
d2j-apk-sign.sh -f -o test_apk-debug-toast-signed.apk test_apk-debug-toast.apk

1. 反編譯Apk得到Java源代碼
  dex2jar.bat    classes.dex  <-- apk="" classes.dex.dex2jar.jar="" p="">2. 上面產生的 jar 檔,透過 jd-gui 來讀原碼
  jd-gui classes.dex.dex2jar.jar
3. 若要修改資源(如要漢化)
  apktool   d  -f [apk文件 ]   [輸出文件夾]
4. 將上面輸出文件夾編譯成 apk
  apktool b [輸出文件夾]

baksmali -a 15 -x mediatek-framework.odex -d framework -o mediatek-framework

解開 AndroidManifest.xml:
 apktool d HelloWorld.apk ./HelloWorld