关于Android APK反编译的探索
注意:本文所讲反编译仅限学习代码和研究,不得用来非法破解软件侵权。特此声明!
近几年学Android应用开发的越来越多了,既然Android也是用Java开发的应该能反编译从而得到源代码。经过一番查询加上测试真解决了这个问题。
首先将apk文件,用winrar解压缩软件打开,把其中的classes.dex取出来复制到软件dex2jar解压缩的目录里
一、反编译Apk得到源代码方法的步骤:
首先要下载两个工具软件:dex2jar和JD-GUI
前者是将apk中的classes.dex 转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:
dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
1.运行CMD,或者在DOS里执行:
dex2jar.bat classes.dex
这样就生成 classes.dex.dex2jar.jar
生成jar文件的后目录截图如下:
2.这个文件用JD-GUI软件里运行jd-gui.exe就可以打开,看到源代码了!
二、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件
如果用来只是汉化软件,这对您将特别有用。
首先还是下载工具,这次用到的是apktool
下载地址:http://code.google.com/p/android-apktool/downloads/list
下载:apktool1.4.3.tar.bz2 和 apktool-install-windows-r04-brut1.tar.bz2(两个包都下载)
过程:
将下载的两个包解压到同一个文件夹下,应该有三个文件:aapt.exe,apktool.bat,apktool.jar
在命令行转到到apktool.bat所在文件夹,输入以下命令:apktool d E:\xx.apk E:\xx文件夹,如下图:
命令行解释:apktool d [apk文件 ] [输出文件夹]
AndroidManifest.xml等等都在这个文件夹中,打开看就可以了。
这个工具还可以打包。当您把文件更改以后再组装成APK时候用用到了。
命令行解释:apktool b [apk文件 ] [输出文件夹]
输出的文件夹一般为C盘里能找到那个.APK文件。
既然这些破解都这么容易,那么应用开发的程序员怎么保护自己呢?Google似乎也发现了这个问题,从SDK2.3开始在android-sdk-windows/tools/下面多了一个proguard文件夹,proguard是一个java代码混淆的工具,通过proguard,反编译经过代码混淆的apk得到的代码别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护的作用。