文档章节

android apk反编译详解

刘小米_思聪
 刘小米_思聪
发布于 2014/10/30 12:08
字数 739
阅读 351
收藏 19

这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。

在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。


本文Android反编译教程,测试环境:

Win7 Ultimate x64

Ubuntu 12.04 x86_x64

反编译工具包 下载 (2012-10-10更新)


一、Apk反编译得到Java源代码

下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。

apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件

源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码


dex2jar 和 jdgui 最新版本下载,分别见google code:

dex2jar(google code)

jdgui(google code),最新版本请见 官方


具体步骤:

首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。

在命令行下定位到dex2jar.bat所在目录,运行

dex2jar.bat    classes.dex

生成

classes_dex2jar.jar


然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了,如下图:



HelloAndroid源码在反编译前后的对照如下:

 



二、apk反编译生成程序的源代码和图片、XML配置、语言资源等文件

如果是汉化软件,这将特别有用

首先还是要下载上述反编译工具包,其中最新的apktool,请到google code下载

apktool(google code)


具体步骤:

下载上述反编译工具包,打开apk2java目录下的apktool1.4.1文件夹,内含三个文件:aapt.exeapktool.batapktool.jar 

注:里面的apktool_bk.jar是备份的老版本,最好用最新的apktool.jar


在命令行下定位到apktool.bat文件夹,输入以下命令:apktool.bat  d  -f   abc123.apk   abc123,如下图:

 

上图中,apktool.bat 命令行解释:apktool.bat   d  -f    [apk文件 ]   [输出文件夹]


反编译的文件如下(AndroidManifest.xml为例):



将反编译完的文件重新打包成apk,很简单,输入apktool.bat   b    abc123(你编译出来文件夹)即可,命令如下:

 

打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹:

build

dist

其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok



三、 图形化反编译apk

上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby

首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk

本文转载自:http://blog.csdn.net/ithomer/article/details/6727581

刘小米_思聪
粉丝 58
博文 60
码字总数 43955
作品 0
西安
其他
私信 提问
Android APK反编译详解(附图)

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

长平狐
2013/01/06
158
0
Android APK反编译详解(附图)(转)

原文转自:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是...

巴顿
2015/01/16
207
0
Android APK反编译详解

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

lhanoo
2012/02/02
409
0
Android APK反编译详解(附图)

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

鉴客
2012/03/09
138
0
Android APK反编译详解(附图)

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

晨曦之光
2012/03/01
320
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA数据结构与算法(二)

栈 1) 栈的英文为 (stack) 2) 栈是一 个 先入后出 (FILO-First In Last Out) 的有序列表 。 3) 栈 (stack) 是限制线性表中元素的插入和删除 只能在线性表的同一端 进行的一种特殊线性表。允许...

aaa阿伟呀
10分钟前
2
0
聊聊nacos的ServiceReporter

序 本文主要研究一下nacos的ServiceReporter ServiceManager.init nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/ServiceManager.java @Component@DependsOn("nacosAppl......

go4it
15分钟前
2
0
文字太长想隐藏的字用省略号来代替

white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 是必须的,因为宽度需要固定它才知道那些文字是超出了范围 你会觉得这样的话那怎么看全部的文字呢?你可以在元素上...

前端老手
21分钟前
3
0
二叉树交换左右子树

树的实现类 public class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int x) {val = x;}public TreeNode(int val, TreeN......

jxlgzwh
36分钟前
11
0
在Workstation 15上测试vShere 6.7+vCenter Server

想学习vSphere,最好能在自己的电脑上搭建相应的学习环境,如下图所示: _________________________________ | ...

大别阿郎
38分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部