反编译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 Files\Java\)那么找到这个Java文件夹,你会发现该文件夹下包括lib,bin,jdk1.7.0_01等文件夹,好的,这是后你就应该设这JAVA_HOME路径为:D:\Program Files\Java\jdk1.7.0_01。
(此变量最好设置,因为以后运行Tomcat,Eclipse等都需要依靠此变量,当然可以不设,直接在PATH加入jdk路径即可,但为了以后方便,个人建议最好设置)。
PATH使得系统可以在任何路径下识别java命令,设置设为:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
【题外话--->上面的两条命令实际上等价于:
D:\Program Files\Java\jdk1.7.0_01\bin;D:\Program Files\Java\jdk1.7.0_01\jre\bin】
CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径)
特别注意:环境变量值的结尾没有任何符号,CLASSPATH变量值中的.表示当前目录。
------------------------------------------------------------------------------
对于java环境变量的配置,絮絮叨叨又说了一通,下面先来大致说一下反编译流程,下面为图解:

我们走的线路是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:\Downloads\CT\CrackTest.apk),用7-zip解压该apk安装包,如下图所示:

然后后面的步骤点击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)。如下图:

转到APK_tool文件夹,如下图:

(如果你想查看apktool的各种命令,你可以输入apktool help 按【Enter】即可显示)
在DOS中输入:
apktool d D:\Downloads\CT\CrackTest.apk D:\Downloads\CT\CrackTest1
按【Enter】键开始反编译。反编译完成后如下图:

好了,这下你可以查看目录D:\Downloads\CT你会发现多了一个文件夹CrackTest1,这个文件夹下面多了一个smali文件(一些人就是分析这些smali文件进行对apk软件修改的,不过这里我们不采用这种方法,忽略这个文件),这时候你再用文本编辑工具比如UltraEdit打开各种布局文件是不是露出原型了,哈哈。接下来我们把java的源代码反编译出来。
3:这一步你需要配置一下java环境路径。比较简单,你只需在PATH中添加你的dex2jar文件的路径即可。比如我的dex2jar路径为:
D:\Downloads\ApkDecode\dex2jar-0.0.9.15
你只需把上面的路径加到PATH即可搞定。
继续进行DOS操作。
输入dex2jar.bat 【你的classes.dex路径】
比如我的dex文件路径为:
D:\Downloads\CT\CrackTest\classes.dex
那么我就输入:
dex2jar.bat D:\Downloads\CT\CrackTest\classes.dex
完成后如下图所示:

完成后会在在classes.dex同级目录下会生成一个classes.dex2jar.jar文件。
然后打开JD-GUI 工具,打开该jar文件,你将看到:

源代码搞定。
教程至此结束。
如果有更好的方法欢迎给我发邮件探讨,个人邮箱:
声明:本文只为学习别人如何写代码而作,恶意破坏本人不承担任何责任。
反编译APK终结教程的更多相关文章
- APK Multi-Tool强大的APK反编译工具终极教程
一.APK Multi-Tool介绍 APK Multi-Tool 是APK Manager的升级版,是一个强大的APK反编译工具,集多种功能于一身,是居家必备.做ROM必选的工具! 这是 ...
- Android基础新手教程——1.10 反编译APK获代替码&资源
Android基础新手教程--1.10 反编译APK获代替码&资源 标签(空格分隔): Android基础新手教程 本节引言: "反编译Apk".看上去好像好像非常高端的样 ...
- Android 反编译apk 详解
测试环境: win 7 使用工具: CSDN上下载地址: apktool (资源文件获取) 下载 dex2jar(源码文件获取) 下载 jd-gui (源码查看) ...
- Uubuntu 14.04 LTS反编译apk
使用apktool反编译apk 1.安装apktool apktool是Google提供的APK编译工具,能够反编译及回编译apk,需要Java环境的支持(在此不再赘述Java的安装与配置,详见< ...
- 反编译apk
一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源 ...
- Atitit.反编译apk android源码以及防止反编译apk
Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...
- 反编译APK文件
有时源代码丢失了,这时如果有apk文件的话,是可以对apk文件反编译得到源文件的,本文介绍一下简单的反编译apk文件的过程. 1.工具 反编译apk需要的工具有两个:apk2java和apktool, ...
- ubuntu下使用反编译apk,工具dex2jar和jd-gui
ubuntu下使用反编译apk, 工具 1:通过apk-tool反编译出资源文件: http://code.google.com/p/android-apktool/ 2.首先使用dex2jar反编译 ...
- Xamarin android如何反编译apk文件
Xamarin android 如何反编译 apk文件 这里推荐一款XamarinAndroid开发的小游戏,撸棍英雄,游戏很简单,的确的是有点大.等一下我们来翻翻译这个Xamarin Android ...
随机推荐
- IOS 使用webview 显示 doc/docx/xls/pdf等
在一款项目里添加阅读各种文档功能 那么对在线的文档或者是下载后的文档 进行阅读,比如 doc/docx/xls/pdf等文件 有两种方法总结如下: 1. - (void)viewDidLoad { [ ...
- ios - 带动画圆形旋转的进度条
#import <UIKit/UIKit.h> @interface TJCircleProgressView : UIView /** * 图标 */ @property(nonatom ...
- 依赖注入容器Autofac的详解
Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成,并且开源,Autofac的主要特性如下: 1,灵活的组件实例化:Aut ...
- makefile文件的技术
[快速的学习笔记] gcc命令:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html#_Toc311642845 makef ...
- vs克隆新建团队项目
团队资源——克隆,完成后打开: 在解决方案资源中,添加——新建项目——web——ASP.NET web应用程序——空的,并将其设为启动项目:
- POJ 3164 Command Network 最小树形图模板
最小树形图求的是有向图的最小生成树,跟无向图求最小生成树有很大的区别. 步骤大致如下: 1.求除了根节点以外每个节点的最小入边,记录前驱 2.判断除了根节点,是否每个节点都有入边,如果存在没有入边的点 ...
- QTREE2 spoj 913. Query on a tree II 经典的倍增思想
QTREE2 经典的倍增思想 题目: 给出一棵树,求: 1.两点之间距离. 2.从节点x到节点y最短路径上第k个节点的编号. 分析: 第一问的话,随便以一个节点为根,求得其他节点到根的距离,然后对于每 ...
- android app性能优化大汇总(google官方Android性能优化典范 - 第1季)
大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来实现流畅的用户体验.但是Android系统很有可能无法及时完成那些复杂的界 ...
- Part 4 using entity framework
Step1: Install entity framework using nuget package manager. Step2: Add a class file to the Models f ...
- 关于windows的svchost进程的问题(年代有点久远)
这是N年前写的一篇关于svchost的blog,虽然写的不好却是我第一次写的技术类blog, 发上来做开博第一篇吧. ***************************************** ...