相信很多开发者都知道反编译APK,正常情况下,如果我们想要看看xml,看看java源代码,是看不了的。用压缩工具解压apk得到的文件也都是二进制文件,打开后全是乱码。

开发者能够用的也仅仅是图片资源,这往往也满足不了开发者的需求。

下面我就给大家详细讲解一下Android-apk的反编译步骤:

注意:反编译的前提是:开发者没有使用proguard(java代码混淆的工具)。

   1.下载反编译工具

需要下载四个工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot

dex2jar:将apk中的classes.dex转化成Jar文件。

JD-GUI:反编译工具,可以直接查看Jar包的源代码。

apktool:反编译工具,通过反编译APK中XML文件,直接可以查看。

apktool-install-windows-r05-ibot:辅助windows批处理工具。

下载地址:

dex2jar:http://code.google.com/p/dex2jar/downloads/list

JD-GUI:http://code.google.com/p/innlab/downloads/lis

apktool:http://code.google.com/p/android-apktool/downloads/list

工具截图:

    2.解压缩APK包

apk文件也是一种常见的zip,常用的压缩软件就可轻松地解压apk文件。用压缩软件将apk文件中的文件解压到一个文件夹中,得到APK中的资源包括XML文件和classes.dex文件,classes.dex就是java文件编译再通过dx工具打包而成的。

解压截图:

 3.反编译dex文件

解压apk文件后,你会发现res目录的图片没有加密,但java源码编译成了一个classes.dex文件,无法用普通的反编译class文件的方法来处理,dex2jar可以将dex文件转换成普通的jar包。

解压下载的dex2jar,把解压后的文件夹放到系统盘跟目录中并把这个目录加到系统path变量中,就可以直接用:dex2jar.bat或dex2jar.sh转换dex文件了。

DOS行命令如下:dex2jar.bat  xx\classes.dex(xx是classes.dex文件所在的路径)。

将在同目录得到普通jar包:classes_dex2jar.jar,就可以用处理普通jar包的方法来反编译这个jar包得到原文件。

编译截图:

生成jar文件的截图如下:

 4.反编译jar包

得到jar包后,下载自已喜欢的反编译工具,推荐使用JD-GUI,有比较简单的图形界面,可以反编译单个class文件,也可以反编译jar包,比较方便。

打开压缩文件JD-GUI,运行jd-gui.exe,打开上面生成的jar包,即可看到源代码了。

截图如下:

5.反编译xml文件

打开解压的res\layout目录,有很多xml文件,如果你想看下作者是如何设计界面的,你会很失望,因为你看到的是一大堆乱码!这个时候我们需要用到的是apktool。

具体操作方法:将下载的apktool和apktool-install-windows-r05-ibot两个包解压到同一个文件夹下,这个文件夹有三个文件:aapt.exe,apktool.bat,apktool.jar。把这个文件夹也放到系统盘的根目录中并把这个目录加到path变量中。以HelloWord.apk为例:

在DOS命令行中输入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夹,此文件夹中的xml文件就是编译好的可以正常查看的文件。

截图如下:

生成的文件:

这样就得到了可以得到编译的源码和XML资源。

注意:文件的路径中最好不要出现中文!

如何反编译apk文件得到源码和XML文件相关推荐

  1. mac平台反编译apk,获取源码,androidmanifest和资源文件

    "提供一个反编译apk的工具" 在window上反编译apk是比较容易的事情,但是在mac上就需要稍微费力一些,这里为了方便大家,特意提供了一个python脚本,实现快速反编译ap ...

  2. Android 的反编译 (附愤怒的小鸟源码下载)

    读源码是最好的学习方法,下面我们以愤怒的小鸟为例,看看如何把一个android游戏反编译成可读的源码. 工具介绍: 1.apktool   这个工具用来解压xml文件 到http://code.goo ...

  3. python加密反编译_对Python源码进行加密及反编译前后对比

    关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...

  4. 小程序代码反编译获取小程序源码nodejs

    第一步,360软件管理里面搜雷电模拟器4,然后按装 第二步,打开后按顺序下载,微信(用来打开小程序来获取小程序源码的wxapkg文件),QQ(从本地电脑发RE管理器到模拟器中进行安装),在模拟器中安装 ...

  5. Java原生调用apktool反编译及再次打包源码

    大家一听到反编译.逆向工程就觉得好像离自己很远,都是些黑客才干的事儿,但实际情况并不是这样,做过手机游戏开发的小伙伴应该都知道,一个游戏包从开发测试到最终在游戏商店上架,中间会经过,代码混淆,增加渠道 ...

  6. 微信反编译(二)源码还原

    概览 我们知道,前端 Web 网页编程采用的是 HTML + CSS + JS 这样的组合,其中 HTML 是用来描页面的结构,CSS 用来描述页面的样子,JS 通常用来处理页面逻辑和用户的交互.类似 ...

  7. php文件统计源码,php统计文件中的代码行数

    函数介绍: file_get_contents()把整个文件读入一个字符串中. explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组. count() 函数返回数组中元素的 ...

  8. android反编译APK后,是smali文件,能反编译成dex文件

    我也面临相同的问题,但目前还没找到类似反编译smali文件的方法,一般得到dex文件只需要用WinRAR或其他压缩软件打开apk文件就能得到.但也有例外好像,技术先进了,今天遇到个apk用WinRAR ...

  9. Android代码混淆及反编译apk

    序言: 经常听开发提起代码混淆引起的BUG,混淆后在测试一下有没有问题,那问题来了什么是代码混淆,怎么确认代码混淆成功了,带着问题读下文吧~~ 一.代码混淆的原理 代码混淆是将程序中的代码,等价转换为 ...

最新文章

  1. doc2vec介绍和实践
  2. 十 ubus安装编译
  3. ERROR: 资源短缺 PXA_NO_FREE_SPACE
  4. php 正则图片相对路径替换成绝对路径_相对路径的优缺点
  5. 重磅发布!最新版《动手学深度学习》PDF 版今天终于可以下载
  6. django如何给上传的图片重命名(给上传文件重命名)
  7. web 界面设计 Axure元件样式
  8. can总线配置读入是什么意思_CAN总线基础知识学习笔记
  9. 阿里云张建锋:工业互联网不是工业自动化
  10. 电子信息计算机调剂到能源动力,江苏科技大学机械、电子信息、电子信息能源动力、土木水利2020年考研调剂信息...
  11. 阶段3 1.Mybatis_09.Mybatis的多表操作_2 完成account表的建立及实现单表查询
  12. mysql tuner sh_MySQL性能提议者:mysqltuner.pl
  13. 计算机信息安全工程师教材,第二级 系统审计保护级-信息安全工程师教材
  14. Win 10 桌面简单美化(+开始菜单 TileGenie)
  15. 特斯拉神器-TeslaMate
  16. HTML---网页编程(2)
  17. linux smb 添加用户,samba创建新用户
  18. bzoj 2121 字符串游戏(字符串dp)
  19. C++为何那么复杂?
  20. wifiadbtool下载_私享空间-中兴B860Av1.1免拆机仅安装APP教程 - 中国电信悦me盒子

热门文章

  1. Java上传文件(FileItem类)
  2. 实验室第八周周工作总结
  3. mysql面试题 常用函数_MySQL常见面试题
  4. Mysql注入 -- 堆叠注入
  5. pycharm jupyter debug 连接 Python 调试器失败: No connection (command: 501 ) 已解决
  6. jquery数组求和
  7. 基于SpringBoot的SSM整合案例 -- SpringBoot快速入门保姆级教程(四)
  8. oracle decode函数用法详解
  9. 爬虫—GEETEST滑动验证码识别
  10. setenforce