Android中的编译和反编译

来源:互联网 发布:淘宝衣服真空袋小号 编辑:程序博客网 时间:2024/06/01 08:38

    Android开发者大都会遇到这样一种情况,有时候看到一个华丽丽的应用,想看看它的代码或者布局什么的,借此学习一下,不料却只有一个APK安装包。当我们尝试用WinRAR等之类工具打开APK时,展示给我们的目录通常是这样的 如下图: Android中的编译和反编译

这里边res里的图片是可以拿来就用的,而诸如layout里的布局及权限文件 (AndroidManifest.xml)已经是一堆乱码了,完全看不懂,想看看别人是怎么布局的。还有源代码都被编译成了 classes.dex,完全看不出什么线索。基于以上的困惑,给大家分享一下Android中的反编译。在反编译之前需要三个工具,分别是:

1.AXMLPrinter2.jar   

 2.baksmali.jar   

 3.smali.jar 

点击他们便可下载!

为了方便起见,把AXMLPrinter2.jar, baksmali.jar,还有smali.jar,放在一起比如放在Android SDK tools文件夹中如下图所示:

Android中的编译和反编译

为了方便理解,现用一个Demo来进行对比。先创建一个工程名为testAPK,具体布局如下所示:

Android中的编译和反编译

现在开始进行反编译,首先打开这个工程编译后的APK,查看其中的main.xml,我们会发现如下所示的一对乱码:

Android中的编译和反编译这时我们的AXMLPrinter2.jar就派上用场了,打开cmd,进入到tools目录下,输入如下命令:

java -jar AXMLPrinter2.jar main.xml main.txt    (如下图所示)

Android中的编译和反编译

之后我们在打开main.txt,就会惊喜的发现:

[代码]经过反编译后的xml:


另外推荐三种反编译工具,第一个是apkTool工具,该工具可以反编译XML文件,读取应用程序的资源信息;第二个是dex2jar工具,该工具可以将.dex文件转化为.jar文件;第三个是jd-gui.exe工具,把已经获取的.class文件或者.jar文件转化为java文件。

详细请访问我的安卓巴士博客:

http://www.apkbus.com/home.php?mod=space&uid=69742&do=blog&id=41302


0 0
原创粉丝点击