Android的 ROM中有很多odex文件,相對于APK中的dex文件而言這個odex有什么作用呢? 如果你仔細觀察會發現文件名時一一對應的,同時那些對應的apk文件中沒有dex文件。這樣做可以使其廠商保證一定的反盜版,因為沒有沒有dex文件的 apk是無法正常安裝的,而廠商直接將odex和不完整的apk文件放到手機rom固化到/system/bin中可以讓一般用戶無法正常導出使用
可能想到的是合并odex和apk變成apk中包含dex文件的,這樣合并后最終apk文件安裝在/data/中,而rom存放在 /system/app中,所以最終導致了用戶可裝在Android手機中的軟件會變少,占用系統空間。
1. 下載 http://smali.googlecode.com/files/smali-1.2.2.jar 和 http://smali.googlecode.com/files/baksmali-1.2.2.jar ,既然是需要盜版,還需要odex所在rom中的一些引用類,一般在 /system/framework 目錄中
2 . 通過odex生成class文件
java -jar baksmali-1.2.2.jar -x android123.odex
執行完上面這行命令后,會生成一個out 文件夾里面是android123.odex的class文件。出現問題,根據提示可以從rom的 /system/framework 中的**.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 挺好,想弄出來裝自己手機上,可是卻發現那個 apk 是殘缺的,里面沒有 classes.dex 文件,卻有個跟 apk 同名的 odex 文件。殘缺的 apk 是裝不了的,只能把這個 apk 跟 odex 合并成一個完整的 apk 才能安裝。 需要的工具:
1 . smali-1.2.2.jar 和 baksmali-1.2.2.jar
2 . 還需要這個 apk 所在的 rom 里面的一些 jar 文件,都在 /system/framework 里面: core.jar, ext. jar, framework. jar, android.policy. jar, services. Jar 。
當然,這五個是最基本的,有可能還不夠,這種情況下面會講到。
總共分四步:
1 . 把下載好的 smali-1.2.2.jar 和 baksmali-1.2.2.jar ,還有 rom 里面摳出來的 5 個 jar ,放到工作目錄,然后 apk 和 odex 也放到一起。
2 . 分解 odex 文件為 class 文件。命令: java -jar baksmali-1.2.2.jar -x 處是你要分解的 odex 文件的名字,命令完成之后,會生成一個 out 文件夾,里面就是所有的 class 文件。如果出現問題,比如什么異常,缺少包什么的,就更到 rom 里面把出錯信息里面要求的包拿出來,放到當前目錄下。
3. 將 class 生成為 classes.dex 文件。命令: java -Xmx512M -jar smali-1.2.2.jar out -o classes.dex 這一步應該不會有什么問題,然后會生成 classes.dex 文件。
4. 把 classes.dex 放入 apk 里面,把蓋子蓋上。最后這一步最簡單了,用解壓縮軟件打開 apk ,然后把千辛萬苦生成的 classes.dex 塞進去,就 ok 了。這個 apk 就能用了。如果想給他重新簽個名的話,去找個 Auto Sign 簽名工具簽署一下就行。
posted on 2013-02-17 14:57
小果子 閱讀(3081)
評論(0) 編輯 收藏 引用 所屬分類:
學習筆記 、
Android & Ios