Android 反编译apk
工具介绍:
apktool
作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads
dex2jar
作用:将apk反编译成java源码(classes.dex转化成jar文件)
下载地址:http://sourceforge.net/projects/dex2jar/files/
jd-gui
作用:查看APK中classes.dex转化成出的jar文件,即源码文件
下载地址:http://jd.benow.ca/
下载完成后如图:

如果上面的文件没有下载成功就自己在其他地方下载,网上搜索下还是很多的,只是注意下比较新的版本就好了哈(版本太旧会导致反编译失败),这里可以将这三个一起下载----> CSDN下载(PS:没有积分的可以直接问我要文件,我也不知道为什么一传上去就默认要5分了)
将【dex2jar-2.0.zip】和【jd-gui-windows-1.4.0.zip】分别解压到当前文件夹,接下来开始使用
1、使用apktool反编译apk得到资源文件
使用cmd将目录切换到当前文件夹的目录下,然后输入
java -jar 【apktool的jar包名称】 d -f 【要反编译的apk路径】 -o 【反编译后保存的文件名】

需要注意如果出现”Input file was not found or was not readable"的问题,
是因为apktool升级到2.0以上时,使用方式已经替换,格式为:apktool d [-s] -f <apkPath> -o <folderPath>
然后目录下生成了对应文件夹,打开里面就是apk的资源文件

2、使用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....之类的样式命名):
到这里就OK了,反编译成功。
需要注意的是

出现这个提示时说明你的jdk在1.8或以上,jd-gui只支持到1.7版本,你可以换成用Procyon-Decompiler或其他
Android 反编译apk的更多相关文章
- Android 反编译apk 详解
测试环境: win 7 使用工具: CSDN上下载地址: apktool (资源文件获取) 下载 dex2jar(源码文件获取) 下载 jd-gui (源码查看) ...
- Android 反编译Apk提取XML文件
Apktool https://ibotpeaches.github.io/Apktool/install/ 下载地址:Apktool https://bitbucket.org/iBotPeache ...
- [Android]反编译apk + eclipse中调试smali
从来没有想过反编译apk是来的如此方便,并且还可以修改后重新编译运行,这比在win下修改pe容易多了,感谢apktool和smali工具的作者提供这么好的工具. 跟踪apk一般的做法是在反编译的sma ...
- Android反编译apk并重新打包签名(Mac环境)
工具下载 apktool :https://ibotpeaches.github.io/Apktool/install dex2jar:https://github.com/pxb1988/dex2j ...
- Android反编译APK
http://blog.csdn.net/vipzjyno1/article/details/21039349/ 关于被加壳工具添加我的apk如何脱壳 http://www.blogfshare.co ...
- Atitit.反编译apk android源码以及防止反编译apk
Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...
- Xamarin android如何反编译apk文件
Xamarin android 如何反编译 apk文件 这里推荐一款XamarinAndroid开发的小游戏,撸棍英雄,游戏很简单,的确的是有点大.等一下我们来翻翻译这个Xamarin Android ...
- Android反编译(未混淆的apk)
Android反编译(未混淆的apk) 工具 dex2jar 下载地址:我的CSDN 或者 官网 jd-gui 下载地址:我的CSDN 或者 官网 反编译步骤 1. 将APK解压缩,获取classes ...
- Android基础新手教程——1.10 反编译APK获代替码&资源
Android基础新手教程--1.10 反编译APK获代替码&资源 标签(空格分隔): Android基础新手教程 本节引言: "反编译Apk".看上去好像好像非常高端的样 ...
随机推荐
- Java并发编程(二)-- 创建、运行线程
Java线程 Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类. Java可以用如下方式创建一个线程: Tread thread = new Thread ...
- 上一篇是copy了整理网上的内容,这篇是一个推荐
因为公司用的 轮播组件是 aui 的 ui库 这个轮播有样式单一等等很多的问题.... 包括滑动BUG(自己也踩了一个小坑,高度和宽度问题...需要设定好,滑动提示按钮点 丑陋............ ...
- 3ds max学习笔记(十三)-- (锥化,扭曲,晶格)
锥化: 新建一个长方体,在修改器列表中选择--锥化: 参数同弯曲有些类似 参数里: 数量:控制上界面的缩放 曲线:橘黄色的线(但模型未发生变化,此时,可以回到物体身上,调整对应方向上的分段数) 组(有 ...
- Ruby零碎笔记
Ruby零碎笔记 飞机上阅读pdf的笔记,因为不联网,内容不多而且比较零散,以tips的形式记录 tips 查看当前作用域的变量 puts local_variables ruby中方法传递参数时,括 ...
- PAT Basic 1006
1006 换个格式输出整数 (15 分) 让我们用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数 ...
- 多个ip以逗号分隔
/^(((?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9 ...
- iOS开发中的富文本
1. 改变指定字符的颜色 NSString * text = [NSString stringWithFormat:@"%@米",distance]; NSMutableAttri ...
- elastic-job详解(二):作业的调度
JobScheduler是elastic-job作业调度的关键类,也是起始类,在包com.dangdang.ddframe.job.lite.api下.调度任务的执行需要包含两大步骤:任务的配置和任务 ...
- Hashmap的Hash()
JDK7: public final int hashCode() { return Objects.hashCode(getKey()) ^ Objects.hashCode( ...
- MongodbHelper
这个是在查找到的一些资料的基础上自己写的,不足之处请交流指正: using MongoDB.Bson; using MongoDB.Driver; using System; using System ...