大家好,這裡介紹apk反編譯操作。
1:apk反編譯
2:odex轉dex
作業環境:ubuntu
A:apk反編譯
.到code.google上下載apktool.jar以及相關檔案:http://code.google.com/p/android-apktool/downloads/list
點擊下載apktool-1.0.0.tar.bz2 和apktool-install-linux-2.1_r01-1.zip
Apktool 命令
./apktool d geek.apk test 反編譯 geek.apk到檔案夾test
B:odex轉dex
http://code.google.com/p/smali/downloads/list
下載下面4個檔案。
現在我們要對CardManager.odex進行反編譯,以CardManager.odex為例。
1:java -jar baksmali-1.3.2.jar -a 12 -x CardManager.odex
//注意:這裡要有core.jar:ext.jar:framework.jar:android.policy.jar:services.jar檔案支援。這個 apk 所在的 rom 裡面的一些 jar 檔案,都在 /system/framework 裡面: core.jar, ext. jar, framework. jar, android.policy. jar, services.jar和對應的.odex檔案,把這些檔案放在CardManager.odex同一級目錄。
運行java -jar baksmali-1.3.2.jar -a 12 -x CardManager.odex ,會產生一個out檔案夾,裡面的檔案以.smali結尾,
2:產生 classes.dex檔案
運行 java -jar smali-1.3.2.jar out/ -o classes.dex
3:下載 dex2jar : dex2jar-0.0.9.8.zip
http://code.google.com/p/dex2jar/downloads/list
解壓 tar -xzvf dex2jar-0.0.9.8.tar.gz
產生classes_dex2jar.jar檔案
dex2jar-0.0.9.8$ ./dex2jar.sh ../Test_HW_ODEX/classes.dex
wanqi@wanqi-System-Product-Name:~/Downloads/dex2jar-0.0.9.8$ ./dex2jar.sh ../Test_HW_ODEX/classes.dex
dex2jar version: translator-0.0.9.8
dex2jar ../Test_HW_ODEX/classes.dex -> ../Test_HW_ODEX/classes_dex2jar.jar
4:運行jd-gui-0.3.2.linux.i686,開啟classes_dex2jar.jar。就ok了。
反編譯framework.odex
java -Xmx512m -jar baksmali-1.3.2.jar --api-level 12 -c:core.jar:bouncycastle.jar:ext.jar:framework.jar:android.policy.jar:services.jar:core-junit.jar -d framework/ -x framework.odex