反编译apk – 可以正常反编译xml和java文件

   我们知道,apk程序实际上是个压缩包,通过解压后发现里面主要是一些xml文件和一个classes.dex文件,xml对应于android工程中的各种原始xml文件,而classes.dex则是由工程中的src下的java文件编译而成,所以我们主要的反编译工作就分别针对xml文件和dex文件来进行。

1’环境变量设定。

-1)下载jdk。(点我下载)

-2)运行刚刚下载的安装程序进行正式安装。
-3)设置运行环境参数:


win7系统 Jdk版本1.7
用鼠标右击“我的电脑”->属性->高级->环境变量
系统变量->新建->变量名:JAVA_HOME 变量值:D:\Program Files\Java\jdk1.7.0(这是我的安装路径这个不是固定的,比如你安装到C:\Program Files,就填C:\Program Files\Java\jdk1.7.0)
系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin;(若已经有Path项,无须另外新建,直接在后面加,但需用;与前面已有的项分隔开)
系统变量->新建->变量名:CLASSPATH 变量值:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

最后测试下环境变量是否设置成功
在左下角的搜索框中键入
cmd

回车
输入javac
如果出现如下信息

用法:javac <选项> <源文件>
其中,可能的选项包括:
-g                           生成所有调试信息
-g:none                      不生成任何调试信息
-g:{lines,vars,source}       只生成某些调试信息
-nowarn                      不生成任何警告
-verbose                     输出有关编译器正在执行的操作的消息
-deprecation                 输出使用已过时的 API 的源位置
-classpath <路径>              指定查找用户类文件的位置
-cp <路径>                     指定查找用户类文件的位置
-sourcepath <路径>             指定查找输入源文件的位置
-bootclasspath <路径>          覆盖引导类文件的位置
-extdirs <目录>                覆盖安装的扩展目录的位置
-endorseddirs <目录>           覆盖签名的标准路径的位置
-d <目录>                      指定存放生成的类文件的位置
-encoding <编码>               指定源文件使用的字符编码
-source <版本>                 提供与指定版本的源兼容性
-target <版本>                 生成特定 VM 版本的类文件
-version                     版本信息
-help                        输出标准选项的提要
-X                           输出非标准选项的提要
-J<标志>                       直接将 <标志> 传递给运行时系统

恭喜,你的Java环境变量配置成功!

若出现

‘javac’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。

说明此次Java环境变量配置出错了,仔细检查下吧!

    1.反编译xml文件

     如果直接解压apk,打开里面的xml文件发现全是些看不懂的乱码,为了能够正常的反编译,首先需要下载一个apktool工具(http://code.google.com/p/android-apktool/),如果是window平台,就要下载apktool1.4.3.tar.bz2和apktool-install-windows-r04-brut1.tar.bz2,然后都解压到同个目录下,这里为了以后使用方便,我直接将其拷贝到sdk的platform-tools,进入命令行,然后进入到你存放apk的目录下,我这里就直接放在d盘根目录下,执行下图所示命令

     其中的mytext是由你任意指定的,执行完后就在d盘下生成一个mytext文件夹,进入该文件夹,打开其中任意个xml文件,你会发现再也没有乱码了,都是你看得懂的。。。另外还有个文件夹smali,这个其实是反编译classes.dex到java文件的一个中间文件类型,虽然能看懂点,可是还是不能像看java文件那么爽,所以就用第二步中的方法单独反编译这块。

     2.反编译classes.dex

     首先下载dex2jar(http://code.google.com/p/dex2jar/)和XJad,同样为了执行方便,我直接将解压后的dex2jar文件夹里的所有内容拷贝到sdk的platform-tools,之后进入命令行,执行如下命令,其中classex.dex文件是用常用的解压缩工具解压apk后得到的。

     执行完后,就在d盘下生成一个classes_dex2jar.jar 包,然后运行刚才下载的XJad中的XJad.exe,依次点击菜单-文件-反编译jar文件,选择刚生成的jar包,稍等片刻后即可在jar同目录下生成一个~classes_dex2jar.jar这样的目录,进入后会发现全是java类型的文件,而且按文件夹都分好类了,这些你都能读得懂。

至此,将1步反编译出的xml文件和2步反编译出的java文件和在一起,就完成了一个apk的反编译工作,你可以尝试各种第三方开发的apk,基本都能解压出来,希望对大家有所帮助。

参考:

图文教程教你一步一步简单制作属于自己的ROM:  http://bbs.hiapk.com/thread-1550607-1-1.html

反编译工具apktool详细教程 http://yinxiaomo.diandian.com/post/2012-02-19/40027759947

反编译apk –  http://blog.csdn.net/zx19899891/article/details/7559201

发表评论

电子邮件地址不会被公开。 必填项已用*标注