如何反编译apk文件得到源码和XML文件
相信很多开发者都知道反编译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文件相关推荐
- mac平台反编译apk,获取源码,androidmanifest和资源文件
"提供一个反编译apk的工具" 在window上反编译apk是比较容易的事情,但是在mac上就需要稍微费力一些,这里为了方便大家,特意提供了一个python脚本,实现快速反编译ap ...
- Android 的反编译 (附愤怒的小鸟源码下载)
读源码是最好的学习方法,下面我们以愤怒的小鸟为例,看看如何把一个android游戏反编译成可读的源码. 工具介绍: 1.apktool 这个工具用来解压xml文件 到http://code.goo ...
- python加密反编译_对Python源码进行加密及反编译前后对比
关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...
- 小程序代码反编译获取小程序源码nodejs
第一步,360软件管理里面搜雷电模拟器4,然后按装 第二步,打开后按顺序下载,微信(用来打开小程序来获取小程序源码的wxapkg文件),QQ(从本地电脑发RE管理器到模拟器中进行安装),在模拟器中安装 ...
- Java原生调用apktool反编译及再次打包源码
大家一听到反编译.逆向工程就觉得好像离自己很远,都是些黑客才干的事儿,但实际情况并不是这样,做过手机游戏开发的小伙伴应该都知道,一个游戏包从开发测试到最终在游戏商店上架,中间会经过,代码混淆,增加渠道 ...
- 微信反编译(二)源码还原
概览 我们知道,前端 Web 网页编程采用的是 HTML + CSS + JS 这样的组合,其中 HTML 是用来描页面的结构,CSS 用来描述页面的样子,JS 通常用来处理页面逻辑和用户的交互.类似 ...
- php文件统计源码,php统计文件中的代码行数
函数介绍: file_get_contents()把整个文件读入一个字符串中. explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组. count() 函数返回数组中元素的 ...
- android反编译APK后,是smali文件,能反编译成dex文件
我也面临相同的问题,但目前还没找到类似反编译smali文件的方法,一般得到dex文件只需要用WinRAR或其他压缩软件打开apk文件就能得到.但也有例外好像,技术先进了,今天遇到个apk用WinRAR ...
- Android代码混淆及反编译apk
序言: 经常听开发提起代码混淆引起的BUG,混淆后在测试一下有没有问题,那问题来了什么是代码混淆,怎么确认代码混淆成功了,带着问题读下文吧~~ 一.代码混淆的原理 代码混淆是将程序中的代码,等价转换为 ...
最新文章
- doc2vec介绍和实践
- 十 ubus安装编译
- ERROR: 资源短缺 PXA_NO_FREE_SPACE
- php 正则图片相对路径替换成绝对路径_相对路径的优缺点
- 重磅发布!最新版《动手学深度学习》PDF 版今天终于可以下载
- django如何给上传的图片重命名(给上传文件重命名)
- web 界面设计 Axure元件样式
- can总线配置读入是什么意思_CAN总线基础知识学习笔记
- 阿里云张建锋:工业互联网不是工业自动化
- 电子信息计算机调剂到能源动力,江苏科技大学机械、电子信息、电子信息能源动力、土木水利2020年考研调剂信息...
- 阶段3 1.Mybatis_09.Mybatis的多表操作_2 完成account表的建立及实现单表查询
- mysql tuner sh_MySQL性能提议者:mysqltuner.pl
- 计算机信息安全工程师教材,第二级 系统审计保护级-信息安全工程师教材
- Win 10 桌面简单美化(+开始菜单 TileGenie)
- 特斯拉神器-TeslaMate
- HTML---网页编程(2)
- linux smb 添加用户,samba创建新用户
- bzoj 2121 字符串游戏(字符串dp)
- C++为何那么复杂?
- wifiadbtool下载_私享空间-中兴B860Av1.1免拆机仅安装APP教程 - 中国电信悦me盒子