码迷,mamicode.com
首页 > 移动开发 > 详细

android 反编译(dex 和 odex),非脑残转帖,绝对可靠

时间:2014-08-07 19:10:30      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:android   反编译   dex   odex   异常   

Android 反编译

反编译odex文件(例如framework.odex),若是反编译dex,直接第4步

1.由于反编译odex的工具在D:\Develop tools\android反编译工具\odex中,因此为了执行命令方便一点在odex文件夹里面,将system的文件夹结构给新建一下,将反编译的odex中所引用的所有包都放到对应的目录下
system-----
     |-------app
     |-------framework

2.java -jar baksmali-2.0.3.jar -d ./system/framework -x ./system/framework/framework.odex
-d      指定bootclasspath dir
-x      deodex the given odex file. This option is ignored if the input file is not an odex file
-a      --api-level <API_LEVEL>,The numeric api-level of the file being disassembled. If not specified, it defaults to 15 (ICS).
         网上很多人转那个帖子都写的是-a 12, 没必要

3.执行完上面的命令后就会在odex目录下生成一个out文件夹,里面就是层次结构了,注意:在执行上面命令之前看一下之前有木有out文件夹,有旧的out文件夹的话,可能导致下面要执行的命令抛出异常,因此要将旧的out文件夹删除,异常如下:
UNEXPECTED TOP-LEVEL EXCEPTION:
org.jf.util.ExceptionWithContext: Unsigned short value out of range: 78281
        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)
最后将转为classes.dex的命令:java -Xmx512M -jar smali-2.0.3.jar out -o classes.dex

4.最后一步就是讲classes.dex反编译为jar文件了,用d2j-dex2jar命令:d2j-dex2jar -f classes.dex

android 反编译(dex 和 odex),非脑残转帖,绝对可靠,布布扣,bubuko.com

android 反编译(dex 和 odex),非脑残转帖,绝对可靠

标签:android   反编译   dex   odex   异常   

原文地址:http://blog.csdn.net/cb269267/article/details/38420941

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!