如何反编译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,混淆后在测试一下有没有问题,那问题来了什么是代码混淆,怎么确认代码混淆成功了,带着问题读下文吧~~ 一.代码混淆的原理 代码混淆是将程序中的代码,等价转换为 ...
最新文章
- RIPng 原理和实践
- android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!
- Python Django 文件上传代码示例
- php的字符串处理总结,php字符串处理函数总结
- mysql update锁_mysql中update语句的锁
- 地图漫游功能的具体体现_一卡通考勤门禁管线系统主要模块功能说明
- Java 系列之spring学习--spring搭建(一)
- JS 判断滚动底部并加载更多效果。。。。。。。。。
- spring aop 必须的包 及里面用到的东西_Spring 原理初探——IoC、AOP
- python批量读取文件名_Python遍历目录并批量更换文件名和目录名的方法
- 移动站原生的select实现省市区联动选择
- hdu 1760 DFS+博弈
- 最近一段时间的手工作品
- python 传奇服务端_传奇游戏服务器源码学习
- 【图像融合】基于matlab GUI像素点图像融合【含Matlab源码 783期】
- Unix文件系统基本概述
- 希腊计数法罗马计数法
- MySql报错1153
- 资产初探:理财直接融资工具
- opencv 简单的裂缝检测