首先反编译别人的APK,主要是学习别人的实现逻辑,给自己一个思路。比较商业的APK也不会给你留下这个漏洞,一些核心的业务处理会在后台进行操作;本地的 APK 也会进行混淆加密等。

好了废话不多说,步入正题:

方法一:在线反编译

很简单方便的一个方法,只要打开网页,把APK放进入,就可以在线编译了,不过速度比较慢,对于比较大型的APK还是不要用这种方法,容易出错。

网址:http://www.javadecompilers.com/apk

方法二:利用apktool工具

需要用的工具有:

1、APK TOOL:这是谷歌提供的的编译工具,我们知道APK其实就是一个压缩文件,我们完全可以把.apk文件后缀改成.zip,这样我们就可以获取里面的资源文件(图片,res目录下的xml文件)和AndroidManifest.xml(这个是乱码的)如果你使用 apk tool 来进行反编译 apk 就不会出现这种问题了。下载地址:https://ibotpeaches.github.io/Apktool/install/ (需要fq)

2、dex2jar:将apk反编译成java源码(classes.dex转化成jar文件) 下载地址:http://sourceforge.net/projects/dex2jar/files/

3、jd-gui:用来查看 jar 包里面的代码的一种工具。官网下载地址:http://jd.benow.ca/

如果不方便fq,这里打包好三个工具下载:https://download.csdn.net/download/li815705994/12367490

下面说一下具体如何使用这个工具

第一步:apk反编译得到程序的源代码、图片、XML配置、语言资源等文件

下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,

打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入以下命令:apktool.bat d -f  winsh.apk  -o text(apktool2.0以后用这个命令)

注意:(命令中winsh.apk指的是要反编译的APK文件全名, text为反编译后资源文件存放的目录名称,即为:apktool.bat   d  -f    [apk文件 ]  -o  [输出文件夹])

如果成功了那你的目录下会出现一个text的文件夹

text就是我们反编译的内容了,当然如果修改完想打包apk也是可以的,因为主题的原因这个就不细说了,网上有很多。

第二步:Apk反编译得到Java源代码

所需工具:dex2jar

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

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

在该目录下会生成一个classes_dex2jar.jar的文件,这个就是反编译后的java代码文件了,只是需要特定的工具查看

第三步:使用jd-gui打开classes_dex2jar.jar文件

直接打开jd-gui.exe工具,在里面找到刚才的classes_dex2jar.jar,就可以了如下:

注意:被混淆过的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名):

方法三:图形化反编译apk

需要下载Gapktool.jar,其实这个原理跟方法二是差不多的,只是这个更智能,不需要我们手动敲写命令,都是可视化的,简单方便。下载地址:https://download.csdn.net/download/li815705994/12367497

下载后直接点击Gapktool.bat,就会开启一个界面,把需要编译的apk放进去,在指定一个输出目录就可以了。

1.运行Gapktool.bat
2.apk文件和输出目录使用英文路径

注意:默认使用jad反编译,如果编译出来的java代码难以阅读,请选择使用jd-gui反编译。
保留smali文件删除gen、src修改res里的文件后可以重修打包成apk使用。

总结:

开发者辛辛苦苦将自己的应用开发出来被别人一反编译便成为了他自己的东西,所以要进行混淆处理:

以下是我转载的混淆的教程:http://blog.csdn.net/vipzjyno1/article/details/21042823

Android 反编译三种方式相关推荐

  1. Android解析XML三种方式(PULL、SAX、DOM)

    本篇博客重点介绍Android中三种解析XML的方式,包括PULL.SAX.DOM,当然不止这些,还可以用第三方的jar包提供的解析,只是这三种在Android中比较常用吧.再顺便介绍一下Androi ...

  2. android获取自定义属性,android 自定义控件中获取属性的三种方式(转)

    第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 android:layout_width="f ...

  3. Android Studio导入外部资源的三种方式

    在Android Studio打开导入外资源的路径:File->Project Structure- 第一步:选择Dependencies 第二步:选择要添加依赖的modules 第三步:为mo ...

  4. sass文件编译的三种方式【舒】

    [舒:]sass文件编译的三种方式 方式一: 1.webstorm打开evtGulp项目或者mcake-activity项目 2.中,开启gulp->default/develop,启动watc ...

  5. Android 使用OpenCV的三种方式(Android Studio)

    from: http://blog.csdn.net/sbsujjbcy/article/details/49520791 其实最早接触OpenCV是很久很久之前的事了,大概在2013年的5,6月份, ...

  6. Android:按键响应方式第一种onClick属性,第二种方法接口类,第三种方式匿名内部类,第四种方式Activity

    一.在xml 中设置按键的onClick 绑定的函数 新建一个工程 然后在相关的页面添加一个Button 运行一下 实际上,现在这个按键一,我们去运行的时候,他是没有任何的反馈的,我们按完它,他没有任 ...

  7. android音频开发6,Android 音视频开发(一) : 通过三种方式绘制图片

    想要逐步入门音视频开发,就需要一步步的去学习整理,并积累.本文是音视频开发积累的第一篇. 对应的要学习的内容是:在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView ...

  8. android double转string_Java 数组转 List 的三种方式及对比

    来源:Java数组转List的三种方式及对比_五道口-CSDN博客 作者:大脑补丁 前言: 本文介绍Java中数组转为List三种情况的优劣对比,以及应用场景的对比,以及程序员常犯的类型转换错误原因解 ...

  9. android xml解析的三种方式

    2019独角兽企业重金招聘Python工程师标准>>> 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了 ...

  10. Android之Android Studio三种方式导入外部资源 以及 报错处理

    Android Studio三种方式导入外部资源 以及 报错处理 android studio提供了三种方式导入外部资源: 1. Library dependency – 在线添加.需联网下载 . 2 ...

最新文章

  1. python怎么读excelsheet_python3 excle(python怎么读写excel文件)
  2. vertx核心类之VertxImpl
  3. Keil 汇编窗口无法设置断点,disassembly显示错误,Keil汇编解析错误
  4. js/jq基础(日常整理记录)-3-一个自定义表格
  5. [读书] Computer Vision: Algorithms and Applications
  6. Accent-Insensitive, Accent Sensitive, a ã, e é 模糊查询
  7. dbartisan mysql_Sybase数据库安全
  8. matlab dividend,[原创]基于(Matlab/R/C++)的方差Gamma模型(Hull期权期货)随机抽样[by fantuanxiaot]...
  9. loadrunner支持php包吗,Loadrunner自带的WebTours
  10. 【Java】计算8+88+888+8888+....前12项的和
  11. python安装jupyterlab_【python】jupyter lab安装与配置
  12. SCOM2012部署系列之十三:监控Exchange server 2013 RTM
  13. 指标公式c语言源码下载,自用60分钟指标源码
  14. java判断两个矩形是否相交_判断矩形相交以及求出相交的区域
  15. jQuery源码学习(一)
  16. 正高、正常高和大地高的区别
  17. python计算时差
  18. opengl——贴图
  19. APP推广的渠道与运营模式分析
  20. 电脑重装系统后台式电脑网卡坏了怎么修复

热门文章

  1. Hadoop权威指南:知识梳理(一)
  2. Golang + Qt5 桌面开发终极解决方案
  3. mysql 关系图 工具_ER图绘制软件-DbSchema数据库关系图设计器下载v8.1.7-领航下载站...
  4. 衬线字体与非衬线字体
  5. 华为radius服务器配置
  6. c语言餐厅饭卡管理系统,饭卡管理系统
  7. 力软部署oracle,力软敏捷开发框架
  8. 以太网交换机erps学习记录
  9. 【MyBatis】缓存配置
  10. win10下用VM 14安装OS X 10.11