简单先解释下,一般java编写后的脚本文件是.java,.class是字节码文件,.dex是android平台可执行文件类型,一般java文件打包成jar包后里面的jar资源是.class,如果需要运行于android,那必须jar里面资源为.dex,如U1的jar脚本
1、dex 转 jar
下载dex2jar,下载地址
解压后,将d2j-dex2jar.bat 路径添加到环境变量,输入d2j-dex2jar显示如下,即配置成功
通过命令:d2j-dex2jar classes.dex即可转成dex 的jar包
2、jar 转 dex
sdk自带的dx.bat
将jar包转换成dex格式二进制的jar包:
dx --dex --output=target.jar(-output=“输出的jar包名”) origin.jar(原来的jar包)
2、.class 转 java
利用jar包查看工具JD-GUI,下载
要将jar转成java,通过file-save all sources即可
二、工具使用方法(命令)
准备工作
假设我的工作目录为 $AndroidDecompile,首先要将system.img中(或者说从源码中编译好的)几个重要的odex文件拷贝到工作目录中,他们是:core.odex, ext.odex, framework.odex, android.policy.odex, services.odex(也可以放在别的目录,通过设置BOOTCLASSPATH指定,默认就是当前目录,关于BOOTCLASSPATH请参考baksmali的帮助信息)。
下载以下工具到 $AndroidDecompile中:
Baksmali :
http://code.google.com/p/smali/downloads/list
Smali :
http://code.google.com/p/smali/downloads/list
Dex2jar :
http://code.google.com/p/dex2jar/downloads/list
JD-GUI (Java Decompile GUI) :
http://java.decompiler.free.fr/?q=jdgui
AutoSign :
http://d.download.csdn.net/down/2768910/fjfdszj
Apktool
http://code.google.com/p/android-apktool/downloads/list
假设我们有一个应用,它的类文件编译后被单独拿了出来,即有两个文件app.apk和app.odex,把他们放在$AndroidDecompile下。
- 使用 baksmali.jar 将 odex 文件分解为 smali 文件
$ java –jar baksmali-1.2.5.jar –x app.odex
如果成功的话,会在 $AndroidDecompile下生成一个 out目录,里面是一些以“.smali”为后缀名的文件,在此不深究这些文件的作用。
- 使用 smali.jar将 out/目录下的smali文件转换为 classes.dex
$ java -Xmx512M –jar smali-1.2.5.jar out –o c