APK文件与Odex 文件 反编译:
一.从APK文件中获取.odex文件:
首先将APK文件后缀改为ZIP并解压,得到其中的classes.dex。
二.获取手机系统中的 .odex文件后 分解得到classes.dex文件。
获取 .odex文件。如下:
1.1按照第一 中没有得到classes.dex文件的,而获取了.odex文件。
1.2或者从手机和模拟器连接到Eclipse成功后,会在DDMS中的文件系统中,有目录system/framework/下有 framework.odex文件(此文件为当前 手机应用开发框架中所有文件(包含隐藏的源码文件),当需要Android系统中使用未公开的类,便可从此得到。)
三.反编译.odex文件 生成classes.dex文件:
1.首先java基本开发环境,下载所需工具smali-1.3.3.jar和baksmali-1.3.3.jar;
2.分解.odex文件为classes.dex文件。
A. 将APK文件解压生成的.odex文件 与smali-1.3.3.jar和baksmali-1.3.3.jar为同一目录后,
B.将手机/system/framework里面文件( .jar,.odex,.apk等文件)一并复制出来 放在与两个工具同一目录(即与smali-1.3.3.jar和baksmali-1.3.3.jar为同一目录
注意:framework下的 大部分几率是 :只有odex文件才是源代码文件 ,jar文件不是(可从文件大小看出).
C.分解 odex文件 为classes.dex文件。
a)若是A 要产生classes.dex文件(即是反编译apk包所生成的 .odex文件) ,则执行命令:
1)执行命令:jara -jar baksmali-1.3.3.jar-a 12 -x **.odex 注:**即是要反编译的应用文件名。会生成一个out文件夹,里面的文件以.smali结尾,
2)java -Xmx512 -jar smali-1.3.3.jar out -o classes.dex
b)若是B 要产生的classes.dex文件(即是反编译framework.odex),则执行命令:
1)java -Xmx512m -jar baksmali-1.3.3.jar --api-level 12 -c:core.jar:bouncycastle.jar:ext.jar:framework.jar:android.policy.jar:services.jar:core-junit.jar -d framework/ -x framework.odex
2)java -jar smali-1.3.2.jar out/ -o classes.dex 最后生成classes.dex文件。
四.生成 .jar文件
1.下载 dex2jar : dex2jar-0.0.9.8.zip 地址http://code.google.com/p/dex2jar/downloads/list ,并将上面得到的classes.dex文件 复制于 dex2jar-0.0.9.8.zip目录下。
2.执行命令 dex2jar.bat classes.dex 后得到 classes_dex2jar.jar 文件。
3.进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,另存为之后可以生成一个zip文件,解压此zip文件,即可得到源代码,然后就可以使用eclipse或者source insight进行查看。
五.apk资源文件反编译。
下载apktool工具,执行 1.decode 该命令用于进行反编译apk文件,一般用法为:
apktool d <file.apk> <dir>
<file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk
<dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer
如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令
apktool d –f <file.apk> <dir> 这样就会强行覆盖已经存在的文件。