一、准备必要的工具

  apktool (资源文件获取)

  dex2jar(源码文件获取)

  jd-gui  (源码查看)

  以上三个文件的下载地址为:https://download.csdn.net/download/wyydn_8476/10811892

二、APK反编译流程

将【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分别解压到当前文件夹,如下图所示:

使用apktool反编译apk得到图片、XML配置、语言资源等文件

进入CMD命令行,切换到上述的3个工具的所在目录,如:E:\AndroidDevelopTool\,接下来我们要做的就是运行apktool_2.0.1.jar这个jar文件来将apk文件进行反编译,在java中,运行可执行jar包的命令是:

java -jar jar包名.jar

使用如下的命令运行apktool_2.0.1.jar反编译APK文件

java -jar apktool_2.0.1.jar d -f E:\AndroidDevelopTool\Test.apk -o MMTS

反编译成功后,会在当前目录(E:\AndroidDevelopTool\)下生成一个MMTS文件夹,打开MMTS里面就有反编译后生成的文件,打开MMTS文件夹,就可以看到反编译后的生成的文件,如下图所示:

生成的文件和文件夹当中,我们关心的是【res】文件夹中和AndroidManifest.xml文件,打开res文件夹,里面就有我们想要看到的东西了。

想查看哪个xml文件就使用文本编辑器打开看看吧,反正全部都可以看到了。以上就是使用apktool这个工具将一个apk反编译得到图片、XML配置、语言资源等文件的过程。

三、使用dex2jar反编译apk得到Java源代码

将要反编译的APK后缀名改为.rar或者 .zip,并解压,得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内,如下图所示:

在命令行下定位到dex2jar.bat所在目录,输入"d2j-dex2jar classes.dex",效果如下:

命令执行完成之后,在当前目录下就可以看到生成的Jar文件了,如下图所示:

反编译classes.dex得到classes-dex2jar.jar文件之后,就可以使用【jd-gui】工具将class文件反编译成java源代码了

使用jd-gui打开classes-dex2jar.jar就可以看到源代码了,如下图所示:

JD-GUI虽然可以将class反编译成java源代码,但是对于一些被混淆过的class,反编译的效果就不是那么理想了,被混淆过的class反编译后的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名):

android apk 反编译过程的更多相关文章

  1. 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译

    反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...

  2. Android apk反编译基础(apktoos)图文教程

    本文主要介绍了Android apk反编译基础,使用的工具是apktoos,我们将用图文的方式说明apktoos工具的使用方式,你可以参考这个方法反编译其它APK试试看了 很久有写过一个广工图书馆主页 ...

  3. 【转】Android APK反编译就这么简单 详解(附图)

    转载地址:http://blog.csdn.net/vipzjyno1/article/details/21039349 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂 ...

  4. Android APK反编译详解(附图)

    转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...

  5. Android APK反编译easy 详解

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...

  6. Android APK反编译就这么简单 详解(附图)

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...

  7. Android APK反编译详解(附图)(转)

    这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件, ...

  8. (转)Android APK反编译详解

    转载地址:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到 ...

  9. Android APK反编译具体解释(附图)

    这段时间在学Android应用开发,在想既然是用Java开发的应该非常好反编译从而得到源码吧,google了一下,确实非常easy,下面是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的 ...

随机推荐

  1. iOS 两个页面之间的跳转

    -------->-------->-------->-------->-------->-------->-------->   以上完成页面one跳到页面 ...

  2. spring中的IOC/DI的知识点

    IOC(Inverse of control):控制反转;其实就是一个装对象的容器,以前我们在controller中调用service中的方法,都要先new 一个service对象,这样不符合模式设计 ...

  3. Numpy知识(三)

    ndarray的花式索引. 正负数索引,正数就是从0开始的下标正向寻找,负数是-1开始的负向寻找. arr[[1,5,2,6],[0,3,1,2]]:拿取arr[1,0],arr[5,3],arr[2 ...

  4. php yii 命令

    php yii 敲回车 This is Yii version 2.0.11. The following commands are available: - asset Allows you to ...

  5. JVM致命错误日志(hs_err_pid.log)分析

    当jvm出现致命错误时,会生成一个错误文件 hs_err_pid<pid>.log,其中包括了导致jvm crash的重要信息,可以通过分析该文件定位到导致crash的根源,从而改善以保证 ...

  6. 微信小程序商品筛选,侧方弹出动画选择页面

    https://blog.csdn.net/qq_36538012/article/details/85110641

  7. Fixation index

    :或者1.简单介绍 固定指数(FST)是一种由遗传结构决定的种群分化指标.它通常是由遗传多态性数据,如单核苷酸多态性(SNP)或微卫星估计.作为莱特f统计的一个特例,它是种群遗传学中最常用的统计方法之 ...

  8. python lambda 函数

    lambda 函数,也叫匿名函数,是一个不需要使用def 关键字定义的小函数.返回一个函数地址. 表达式只能有一个,参数可以有多个. a = lambda x:x*x a(3) 返回的是9

  9. Excel图表编辑---表格移动,样式修改

    一.移动位置和调整大小 先鼠标选中如下面这个图片,之后点击上方的设计按钮,随后选择右边的, 再选择,就可以实现图片的表格之间的移动. 其中移动图表里面的,选中这个之后,图表的大小会根据窗口的大小自动调 ...

  10. 设置input标签的placeholder的样式

    设置input样式代码: input::-webkit-input-placeholder{ /*WebKit browsers*/ color: red; } input::-moz-input-p ...