APK反编译(附图)

既然安卓是用java写的,应该还是可以反编译得到源代码的。下面是我的实践:

反编译前准备:下载反编译工具包 http://pan.baidu.com/s/1qWFcueC或者 http://download.csdn.net/detail/sunboy_2050/4633436

介绍一下工具包下的各个文件夹及其功能:
     在apk2java目录下的dex2jar-0.0.9.9文件夹下,内含apk反编译工具dex2jar,将apk中的classes.dex转化成jar文件,以及源码查看工具jdgui,直接查看反编译后的jar包源代码。

dex2jar 和 jdgui 最新版本下载:
dex2jar http://code.google.com/p/dex2jar/downloads/list
jdgui http://code.google.com/p/innlab/downloads/list

一:通过反编译得到java源代码
1:将测试的apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。
在命令行下定位到dex2jar.bat所在目录,运行
dex2jar.bat    classes.dex
结果生成
classes_dex2jar.jar

2:进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图:



二:apk反编译生成程序的源代码和图片、XML配置、语言资源等文件
在工具包apk2java\apktool1.4.1下面有一个apktool.jar,大家最好下载最新版本的然后覆盖,下载地址: https://code.google.com/p/android-apktool/downloads/list
1:在命令行下定位到apktool.bat文件夹,输入以下命令:apktool.bat   d   [apk文件路径 ]   [输出文件夹路径] 如下图:



反编译的文件如下(AndroidManifest.xml为例):


将反编译完的文件重新打包成apk,很简单,输入apktool.bat   b   [输出文件夹路径] 即可,然后生成了两个文件夹build和dist。其中,打包生成的apk,在上面的dist文件夹下,Ok!

当然,对于那些经过加密处理混淆代码后的apk,我们即使反编译出来也是看不懂的。想要防止自己的apk被反编译用于非法用途可以借助 http://www.ijiami.cn/

猜你喜欢

转载自1316478764.iteye.com/blog/2098054