android APK提取內(nèi)置軟件odex轉(zhuǎn)dex
細心的網(wǎng)友可能發(fā)現(xiàn)android的ROM中有很多odex文件,相對于APK中的dex文件而言這個odex有什么作 用呢? android123提示大家,如果你仔細觀察會發(fā)現(xiàn)文件名時一一對應(yīng)的,同時那些對應(yīng)的apk文件中 沒有dex文件。這樣做可以使其廠商保證一定的反盜版,因為沒有沒有dex文件的apk是無法正常安裝的 ,而廠商直接將odex和不完整的apk文件放到手機rom固化到/system/bin中可以讓一般用戶無法正常導 出使用。
很多網(wǎng)友可能想到的是合并odex和apk變成apk中包含dex文件的,這樣合并后最終apk文件安裝 在/data/中,而rom存放時在 /system/bin中,所以最終導致了用戶可裝在android手機中的軟件會變 少,占用系統(tǒng)空間。 用android手機會遇到如何將APK制作成內(nèi)置軟件,即將APK軟件分解xxx.apk和xxx.odex并放到/system/app,看教程:android 制作內(nèi)置軟件制作odex方法 當你看到手機內(nèi)置軟件有好的軟件想提取出來,就要將xxx.odex轉(zhuǎn)為classes.dex,壓縮到xxx.apk里,再簽名apk。 apk實際是一個zip文件,可用壓縮工具直接打開或解壓,也可以更改后綴名為 .zip。 該教程基于 XP SP3 32位的系統(tǒng)下試驗制作! 準備軟件和文件: odex轉(zhuǎn)dex要在Java環(huán)境下制作,下載軟件java jdk 7 官網(wǎng)下載下windows x86 windows-i586.exe的,要點選ACCEPT才能下載,或點此直接下載 下載baksmali.jar和smali.jar,版本是1.2.8 如果你的電腦安裝了360,可能會出現(xiàn)提示,點選允許所有操作和不在提示,或把它卸載了安裝完再裝回去。
將手機/system/下的framework整個文件夾復制到電腦上,應(yīng)為到時需要/system/framework下的某些文件。 下載:framework,僅供提供的calculator.apk和calxulator.odex使用,提取自己手機內(nèi)置軟件的用自己手機的framework。 安裝好Java jdk7后在D盤下建一個文件abc,把baksmali.jar和smali.jar放到文件夾下,把framework里的所有文件也放到abc下,把需要提取的內(nèi)置軟件xxx.odex放到abc下, 喚出CMD: 開始—運行—輸入CMD后點確定或按ENTER回車鍵,喚出CMD后輸入下面命令后按回車鍵: d: 進入D盤 cd abc 進入abc文件夾 首先通過odex生成class文件,命令如下: java -jar baksmali.jar -x calculator.odex 為了輸入方便也可將odex命名為a.odex java -jar baksmali.jar -x a.odex
執(zhí)行完上面這行命令后,會生成一個out 文件夾里面是calculator.odex的class文件。 參考:出現(xiàn)問題,根據(jù)提示可以從rom的 /system/framework 中的xxx.jar放到pc上的java環(huán)境變量中一起生成。 已將framework下的所有文件放到abc下,不成功也不是這個問題。 通過class生成classes.dex 文件,命令如下: java -Xmx512M -jar smali.jar out -o classes.dex 注意輸入命令區(qū)分大小寫:Xmx512M, 和轉(zhuǎn)下一個odex文件前要刪除out文件夾 成功的命令圖如下:
輸入代碼麻煩則可下載批處理:Odex轉(zhuǎn)class轉(zhuǎn)dex.zip,將解壓得到的批處理放到abc文件夾下,將要處理的xxx.odex拖到odex轉(zhuǎn)class轉(zhuǎn)dex.bat文件的圖標就會自動生成classes.dex了。使用該批處理“abc”可放到任意盤和位置都可 bat批處理文件實際上是txt文件,可用記事本等編輯器打開,或改后綴名為 .txt ,bat批處理是把你在CMD里輸入的所有代碼保存到記事本,再改后綴名為bat即可。如上面calculator.odex制作為bat,代碼如下: d: cd abc java -jar baksmali.jar -x calculator.odex java -Xmx512M -jar smali.jar out -o classes.dex pause 用記事本保存改后綴名為bat后雙擊執(zhí)行即可,麻煩的是處理不同的odex文件要將calculator.odex改代碼為要處理的odex文件名。 odex轉(zhuǎn)class轉(zhuǎn)dex.bat的代碼如下: cd /d %~dp0 java -jar baksmali.jar -x %1 java -jar smali.jar out/ -o classes.dex rd out /Q /S pause
odex轉(zhuǎn)dex成功后將class.dex放回apk壓縮包里不能使用,apk要簽名才可使用. 將calculator.apk解壓到calculator文件夾,將生成的classes.dex放到calculator文件夾,
下載簽名批處理:auto-sign,解壓,把解壓出來的 APK簽名.bat和_data文件夾, 和calculator文件夾放到任意盤根目錄,建議C盤,拖動calculator文件夾到APK簽名.bat的圖標上就會自動簽名和打包回apk。 相關(guān)BAT,ODEX和DEX轉(zhuǎn)class.bat class轉(zhuǎn)dex.bat ODEX轉(zhuǎn)dex教程二: 下載并安裝軟件java jdk 7 點此下載 安裝好Java jdk 7 ,將 全自動 odex 2 dex解壓到任意盤任意目錄,將要處理的所有xxx.apk和xxx.odex放到file文件夾里,將手機里/system/framework下的所有文件復制出來放到make文件夾下,雙擊打開 開始.bat ,生成的對應(yīng)程序文件夾在OK文件夾下,用auto-sign批處理簽名打包即可。 下載簽名批處理:auto-sign,解壓,把解壓出來的 APK簽名.bat和_data文件夾, 和OK下的文件夾放到任意盤根目錄,建議C盤,拖動文件夾到APK簽名.bat的圖標上就會自動簽名和打包成apk。 亦可使用 全自動 odex 2 dex(原)+ 遠離命令行和批處理軟件: apktool beta 1.3.5亦即apktool_GUI_1.3.5.exe,將apk拖到簽名欄即可。apktool beta 1.3.5運行需安裝JAVA,軟件運行如下圖:
教程二結(jié)束! android內(nèi)置軟件提取教程結(jié)束!
重要的問題:當你將一個apk用壓縮軟件解壓后會看到某些APK有一個 lib 文件夾,這個就是驅(qū)動文件,官方rom是放在 /system/lib 下 的 .so 文件就是apk的驅(qū)動。官方ODEX化的apk把驅(qū)動全部都放到了/system/lib 里,所以想知道哪些 .so文件是哪個apk的很難,沒有驅(qū)動apk不能正常運行的。 不帶lib 的apk就沒有問題!
|
|
|