http://code.google.com/p/smali/downloads/list
下載下面4個文件。
命令行輸入命令:
“java -jar baksmali.jar -x CertInstaller.odex”
注意:如果出現如下錯誤
org.jf.util.ExceptionWithContext: Cannot locate boot class path file /system/framework/core.odex
at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPath.java:2
17)
at org.jf.dexlib2.analysis.ClassPath.fromClassPath(ClassPath.java:161)
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:59)
at org.jf.baksmali.main.main(main.java:274)
解決方法是,在當前文件夾下新建system文件夾,並在system文件夾下建立framework文件夾,然後將
常用的一些odex放入framework文件夾下,如core.odex, ext.odex, framework.odex, android.policy.odex, services.odex(在相應ROM中system/framework/下提取,或從相應源碼中out/.../system/framework/獲得),
再輸入命令:
java -jar baksmali.jar -d ./system/framework -x CardManager.odex
按照它的提示缺哪個就將相應的odex放入framework文件夾,直到命令成功運行不報錯誤,成功後會在
當前文件夾下會生成一個out文件夾
最後輸入命令:
java -Xmx512M -jar smali.jar out -o classes.dex
即可生成classses.dex文件。
注意:如果出現以下錯誤,
UNEXPECTED TOP-LEVEL EXCEPTION:
org.jf.util.ExceptionWithContext: Unsigned short value out of range: 94940
at org.jf.dexlib2.writer.DexDataWriter.writeUshort(DexDataWriter.java:11
6)
at org.jf.dexlib2.writer.InstructionWriter.write(InstructionWriter.java:
312)
at org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:980)
at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java
:759)
at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:214)
at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:192)
at org.jf.smali.main.main(main.java:229)
生成的dex文件用dex2jar和jdgui即可完成反編譯和源碼查看。