Android ROM中Odex檔案的作用介紹及破解方式
很多網友可能想到的是合併odex和apk變成apk中包含dex檔案的,這樣合併後最終apk檔案安裝在/data/中,而rom存放時在 /system/bin中,所以最終導致了使用者可裝在Android手機中的軟體會變少,佔用系統空間。
一、APK生成odex檔案方法:
編譯開源GIT上的build/tools/dexpreopt/dexopt-wrapper這個,使用dexopt-wrapper即可,操作步驟
將dexopt-wrapper放到/data/local目錄中,使用adb shell執行linux命令列,使用cd命令進入/data/local目錄,
cd /data/local
./dexopt-wrapper android123.apk android123.odex
二、合併odex和 少dex的apk 為完整的apk檔案
1. 下載 http://smali.googlecode.com/files/smali-1.2.2.jar
2 . 通過odex生成class檔案
java -jar baksmali-1.2.2.jar -x android123.odex
執行完上面這行命令後,會生成一個out 資料夾裡面是android123.odex的class檔案。出現問題,根據提示可以從rom的 /system/framework 中的xxx.jar放到pc上的java環境變數中一起生成。
3. 通過class生成classes.dex 檔案。
java -Xmx512M -jar smali-1.2.2.jar out -o classes.dex
4. 將classes.dex放到apk檔案
因為apk是zip的mime編碼型別,使用winzip或winrar直接拖入到apk改名為zip的壓縮包中即可。
5. 不要忘記了簽名,使用jdk中的arsigner和keytool打包重新簽名即可。
大家好,這裡介紹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
下載下面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