android反编译浅析
从接触android开发开发,反编译一直就是离不开的工具,学习好的android应用的代码编写规范。
这篇文章主要就是讲述如何反编译apk文件得到java文件的,反编译不为了窃取,仅供学习交流代码而已。本文的目录结构为:
1、概述
2、详细的讲述apk工程的反编译
概述:
分析Android工程的目录结构可以知道,其基本上可以简单的理解为三个部分:源码,资源文件和编译配置文件。这其中的资源文件(图片,xml文件,assert等)是从打包开始就直接存放在apk中的,图片等无需反编译,源码(暂时接触到java源码)文件则很有可能会被“混淆”以防止别人反编译,混淆文件存放在配置文件ant.properties文件中的;而配置文件,主要是androidManifest.xml文件则是直接暴露出来的,这很关键。获取xml文件盒源码则成为反编译最重要的任务。
下面来详细的讲述apk工程的反编译
一、使用编译工具
本人也是直接从网上下载的反编译工具,使用效果不错,这里提供下载地址:http://download.csdn.net/detail/feishangbeijixing/8094335
1、apktool,得到xml文件
2、android反编译工具
二、开工
a) Apk——> 工程目录
这一步相对很简单,主要是为了得到androidManifest.xml文件,dex文件,布局文件和资源文件。有两种方式都可以实现:
1、 直接将apk解压缩
这样的情况下,没有经过“混淆”的apk工程是可以直接得到xml文件(可直接阅读的)和dex文件的;但是经过“混淆”的apk工程文件中xml文件貌似不可以直接读取(显示乱码)
2、 使用apktool工具
使用方法:先将apktool解压缩,在apk文件夹目录下放置需要解压缩的apk文件并更名为123.apk。双击apkTool文件(其实是一个windows的脚本文件,也可知是可以通过Dos的方式运行的),点击之后根据如下图所示,执行反编译或者回编译。
b) smail----->dex
今天自己按照自己的blog反编译的时候才发现原来上一步得到的只是smail文件,还不是直接得到dex文件,特地来修改一下。
将自己的apk直接用压缩包解压缩就直接可以得到dex文件,后面的dex——>jar就可以直接使用了!
c) Dex——>源码
有上一步得到的dex文件(在上一步中直接解压就有可能得不到dex文件,试过几次貌似如此)
使用android反编译工具中的dex2jar.bat工具,位置:android反编译工具Android反编译\dex2jar-0.0.9.15。
1、 执行命令:dex2jar.bat classes.dex(执行命令之前需要先将classes.dex文件放置到dex2jar-0.0.9.15这个文件夹下,执行命令之后就可以得到classes_dex2jar文件)
2、 用jd-gui工具查看上一步中得到的class-dex2jar包文件。就可以看到源码了
3、反编译完了就可以查看并修改没有经过“混淆”的源码了。然后再用apkTool来回编译并签名就可以使用“你的”apk应用了