1. 程式人生 > 其它 >[轉]用baksmali/smali,將odex轉成dex

[轉]用baksmali/smali,將odex轉成dex

眾所周知,dex是Android虛擬機器Dalvik上的可執行檔案,而odex是優化過(Optimized)的dex。
我們知道,dex檔案,可以通過dex2jar,轉化為jar,然後可以通過jd-gui檢視其java原始碼。

那麼,odex呢?可以通過baksmali/smali,將其轉換為dex,然後再用上述方式即可。

步驟如下:

1、將odex轉smali

java -jar baksmali.jar -x classes.odex -d framework

2、將smali轉dex

java -jar smali.jar out -o classes.dex

其中,引數的意義如下:

-o,--output <DIR> the directory where the disassembled files will be placed. Default is out.
-d,--bootclasspath-dir <DIR> the base folder to look for the bootclasspath files in.
-v,--version prints the version then exits
-x,--deodex deodex the given odex file.
使用baksmali時,可能需要Android系統的庫檔案。如果缺少,會出現如下錯誤:
Error occurred while loading boot class path files. Aborting.
org.jf.util.ExceptionWithContext: Cannot locate boot class path file /data/dalvik-cache/system@[email protected]@classes.dex
at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPath.java:217)
at org.jf.dexlib2.analysis.ClassPath.fromClassPath(ClassPath.java:161)
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:67)
at org.jf.baksmali.main.main(main.java:280)
只需用如下命令,將對應的jar,從手機/system/framework目錄下,匯入到電腦的framework資料夾下即可。

adb pull /system/framework/core.jar ./framework


————————————————
版權宣告:本文為CSDN博主「杭州山不高」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/gaojinshan/article/details/50011789