反编译APK终结教程

现在来教大家如何由网上下载的Android应用反编译为源码。如果你感兴趣,就来看一看吧。前提是你的电脑得已经配置好了java环境,如果没有配置好的话,下面我会附带一提,如果你还是不懂的话,那就上网搜一下,教程满天飞。

---------------------------------------------------------------------------

java环境路径配置(前言:我只是略带一提,不懂者请上网查更详细的,这在这里非重点):

下载JDK

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

下载完后安装,要记住你的JDK安装路径,后面要用。

安装完后,配置环境变量(Win7为例),依次执行:【计算机】/【鼠标右键】/【属性】/【高级系统设置】/【高级】/【环境变量】/【系统变量/新建】

我们在系统变量里新建三个变量(如果有就不用新建了,各个量之间用分号隔开):

PATH,CLASSPATH,JAVA_HOME(大小写无所谓,建议大写)

JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径(以我的为例,我安装的JDK版本为:jdk1.7.0_01,安装后路径为D:Program FilesJava)那么找到这个Java文件夹,你会发现该文件夹下包括lib,bin,jdk1.7.0_01等文件夹,好的,这是后你就应该设这JAVA_HOME路径为:D:Program FilesJavajdk1.7.0_01。

(此变量最好设置,因为以后运行Tomcat,Eclipse等都需要依靠此变量,当然可以不设,直接在PATH加入jdk路径即可,但为了以后方便,个人建议最好设置)。

PATH使得系统可以在任何路径下识别java命令,设置设为:

%JAVA_HOME%in;%JAVA_HOME%jrein

【题外话--->上面的两条命令实际上等价于:

D:Program FilesJavajdk1.7.0_01in;D:Program FilesJavajdk1.7.0_01jrein】

CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar (要加.表示当前路径)

特别注意:环境变量值的结尾没有任何符号,CLASSPATH变量值中的.表示当前目录。

------------------------------------------------------------------------------

对于java环境变量的配置,絮絮叨叨又说了一通,下面先来大致说一下反编译流程,下面为图解:

decode

我们走的线路是apk--dex--jar--java(跳过smali,有人通过分析smali来分析源码,不过这需要了解smali知识,我略微看过一点儿, 在我前面的博文中写过一点儿,此处暂时不提smali)

需要的工具:

1:解压压缩文件工具7-zip,基本上这东西每台电脑都要使用。建议你下载一个。

下载地址:http://sparanoid.com/lab/7z/

2:下载我们要反编译的apk安装包,到下面地址下载

下载地址:http://pan.baidu.com/s/1pJqEyLX

3:apktool工具。

下载地址:https://code.google.com/p/android-apktool/downloads/list

(注意要下载两个:apktool1.5.2.tar.bz2与apktool-install-windows-r05-ibot.tar.bz2)

4:Dex2jar工具

https://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=

5:JD-GUI (Java Decompile GUI)(具有可视化操作界面)

http://java.decompiler.free.fr/?q=jdgui

以上的工具只有7-zip需要安装,安装完后开始我们的decompile。Let’s go!

1:找到我们下载的apk安装包,(在这里我把它重命名为CrackTest.apk,路径为:D:DownloadsCTCrackTest.apk),用7-zip解压该apk安装包,如下图所示:

1

然后后面的步骤点击OK,解压后会自动产生一个CrackTest文件夹。里面的文件大致如下:

AndroidManifest.xml,classes.dex,resources.arsc,assets ,META-INF,res

就这个APK而言对我们有用的有文件有AndroidManifest.xml,classes.dex,res三个。

其中AndroidManifest.xml与res中的代码我们直接打开时无法看到的,没事儿,一会儿我们会解决的。classes.dex为java源码,当然我们也无法看到,同样的,别担心,一会儿Crack it!不过res中的图片文件等我们已经可以使用了。好的现在最重要的是我们得到了dex文件。

2:将apktool下载的东西解压后放到一个文件夹内,以我的为例,均放到APK_Tool文件夹。 里面应该有三个文件,win+r,输入cmd打开DOS界面(一点也不懂DOS命令的可以参考我的文章:

http://www.cnblogs.com/killerlegend/p/3242313.html)。如下图:

2

转到APK_tool文件夹,如下图:

3

(如果你想查看apktool的各种命令,你可以输入apktool help 按【Enter】即可显示)

在DOS中输入:

apktool d D:DownloadsCTCrackTest.apk D:DownloadsCTCrackTest1

按【Enter】键开始反编译。反编译完成后如下图:

4

好了,这下你可以查看目录D:DownloadsCT你会发现多了一个文件夹CrackTest1,这个文件夹下面多了一个smali文件(一些人就是分析这些smali文件进行对apk软件修改的,不过这里我们不采用这种方法,忽略这个文件),这时候你再用文本编辑工具比如UltraEdit打开各种布局文件是不是露出原型了,哈哈。接下来我们把java的源代码反编译出来。

3:这一步你需要配置一下java环境路径。比较简单,你只需在PATH中添加你的dex2jar文件的路径即可。比如我的dex2jar路径为:

D:DownloadsApkDecodedex2jar-0.0.9.15

你只需把上面的路径加到PATH即可搞定。

继续进行DOS操作。

输入dex2jar.bat 【你的classes.dex路径】

比如我的dex文件路径为:

D:DownloadsCTCrackTestclasses.dex

那么我就输入:

dex2jar.bat  D:DownloadsCTCrackTestclasses.dex

完成后如下图所示:

5

完成后会在在classes.dex同级目录下会生成一个classes.dex2jar.jar文件。

然后打开JD-GUI 工具,打开该jar文件,你将看到:

6

源代码搞定。

教程至此结束。

如果有更好的方法欢迎给我发邮件探讨,个人邮箱:

chinamyth1@gmail.com

声明:本文只为学习别人如何写代码而作,恶意破坏本人不承担任何责任。


作者:KillerLegend
出处:http://www.cnblogs.com/KillerLegend/
分享最新的资源,分享个人所得,欢迎关注我的新浪微博
新浪微博主页:ikey4u
我的个人博客:www.ikey4u.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 
原文地址:https://www.cnblogs.com/killerlegend/p/3249003.html