相信很多开发者都知道反编译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. RIPng 原理和实践
  2. android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!
  3. Python Django 文件上传代码示例
  4. php的字符串处理总结,php字符串处理函数总结
  5. mysql update锁_mysql中update语句的锁
  6. 地图漫游功能的具体体现_一卡通考勤门禁管线系统主要模块功能说明
  7. Java 系列之spring学习--spring搭建(一)
  8. JS 判断滚动底部并加载更多效果。。。。。。。。。
  9. spring aop 必须的包 及里面用到的东西_Spring 原理初探——IoC、AOP
  10. python批量读取文件名_Python遍历目录并批量更换文件名和目录名的方法
  11. 移动站原生的select实现省市区联动选择
  12. hdu 1760 DFS+博弈
  13. 最近一段时间的手工作品
  14. python 传奇服务端_传奇游戏服务器源码学习
  15. 【图像融合】基于matlab GUI像素点图像融合【含Matlab源码 783期】
  16. Unix文件系统基本概述
  17. 希腊计数法罗马计数法
  18. MySql报错1153
  19. 资产初探:理财直接融资工具
  20. opencv 简单的裂缝检测

热门文章

  1. 吃东西时出汗多是病吗?
  2. Linux:族谱(2018)
  3. linux命令--tcpdump
  4. idea 上传jar包到远程仓库_在idea打包并上传到云服务项目流程分析
  5. 亲们 ,paypal账户您们都是怎么提现结汇呢?
  6. 结合C4D和AE制作产品广告动画视频教程
  7. 复位测试激励verilog HDL实例(写法3)
  8. 二次函数顶点坐标公式的另一种推导
  9. socket通信 tcp协议和udp协议 C++
  10. 【Jsp】第二课 Servlet入门学习(一)