反编译odex文件

来源:互联网 发布:安装禅道pathinfo.php 编辑:程序博客网 时间:2024/05/22 00:48

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)

可以将out目录下的java、javax、android等文件夹删除,重新运行命令。

生成的dex文件用dex2jar和jdgui即可完成反编译和源码查看。

0 0
原创粉丝点击