聊聊Android的APK反编译
上一篇《How To Use Proguard in Android APP》介绍了如何对Android进行混淆,现在来对它进行反编译看看,里面有些什么东西。
APK文件,其实也是一个压缩文件,我们可以把它的后缀改为zip格式,解压缩后看看里面的东西,如下:

这里,Android对XML之类文件进行了加密,因此看到的是乱码:

resources.arsc文件是资源文件的二进制索引,每个目录下都放着相关的资源文件,另外还有一个重要角色:classes.dex,这个就是源码打包后的文件,后面再搞它。
Android的反编译经历3个步骤:
apk ---> dex/smali ---> jar
用到3个工具,可以从这个链接查找下载:https://www.linjk.cn:3298/iHouse/utils/file_list_upload.php
apktool ---> dex2jar ---> jd-gui
在使用apktool时若发生解析错误,建议使用更新版本的。
下面,开始进行反编译:
1. 使用工具apktool,参数d代码解码(decode),另外参数b可用于打包(binary)

执行命令后目录结构如下:

和解压缩不一样,解压缩出来的xml文件不可看,这里的xml都是可以看到的,在smali目录下就是源码了,如下部分截图:

因为这里混淆了代码,所有类名都用a、b、c之类的字母替代了。前面解压缩出来的dex是提供给虚拟机执行的,是字节码文件,这里输出的smali文件是apktool按照dex和虚拟机格式转换出来的,类似于汇编语言,也可以使用Smaliviewr或IDA等工具来看函数的调用地址,再配合其他工具获取控件的id,就可以一步步进行功能破解了,后面有时间再写写这部分。
2. 使用工具dex2jar
将前面解压出来的classes.dex转为jar包,如下:

这一步的输出文件是:classes-dex2jar.jar
3. 使用工具JD-GUI查看第2步的输出文件,打开jd-gui软件,然后打开这个jar包文件即可,如下图所示:

左边是app使用的包结构图,右边是随便打开的一个class文件图,可以看到,有些没被混淆的类可以看到源码,已被混淆的类调用已被a、b等字母替换。
APP的反编译查看源码步骤大概就是这样了,反编译主要是想学习别人的代码架构是怎么分配的,学习别人的长处,不要干坏事哦
聊聊Android的APK反编译的更多相关文章
- android之apk反编译
今天就来详细的讲一讲apk的反编译过程,之前自己一直没彻底搞清楚. 一.准备工作 反编译首先要准备三个工具.这三个工具都是可以百度下载的.就是下图所示的三个工具. 这三个工具是有各自作用的: (1)a ...
- Android实践--apk反编译
版权声明:本文为博主原创文章.转载请注明出处. https://blog.csdn.net/ysjian_pingcx/article/details/25468867 Android apk反编译一 ...
- [Android逆向]APK反编译与回编译
一.先查壳,再反编译看验证首先打开.apk文件==>反编译apk(dex/配置文件/资源文件(apk反编译失败)>修改关键文件实现自己的目的>重新打包签名(无法重新打包)==> ...
- Android程序apk反编译破解方法
简短不割了,我们直接奔主题吧. 把apktool-install-windows-r05-ibot文件里的两个文件剪切到apktool1.5.1目录. 新建一个文件夹把需要破解的apk应用程序放进去. ...
- 【转】Android APK反编译就这么简单 详解(附图)
转载地址:http://blog.csdn.net/vipzjyno1/article/details/21039349 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂 ...
- Android APK反编译详解(附图)
转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...
- Android APK反编译easy 详解
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...
- Android APK反编译就这么简单 详解(附图)
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...
- 从原生APK反编译,拿到界面,用于mono for android
从原生APK反编译,拿到界面,用于mono for android 1.用apktool反编译apk,得到xxx.apk.de 2.从xxx.apk.de\res\layout 3.复制所有xml到M ...
随机推荐
- FadeTop – 定时休息提醒工具
FadeTop 是款定时休息提醒工具,其特色是当设定时间到达时,将桌面渐变为指定的颜色,强制提醒但不影响桌面的任何操作 FadeTop is a visual break reminder for W ...
- HDU 3351 Seinfeld(括号匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3351 解题报告:输入一个只有'{'跟'}'的字符串,有两种操作,一种是把'{'变成'}',另一种是'} ...
- 服务器如何处理http请求
1.需求 了解服务端如何处理http请求,了解基本的处理流程 2.实战 处理http请求分为7个步骤 2.1 Tcp连接 建立一条tcp链接,(若之前不存在持久链接keep-alive),把客户端的i ...
- [KOJ6997]旅行商问题二
[COJ6997]旅行商问题二 试题描述 Bob是一名旅行商,Bob同时也是一个哲学家,他深知到了一个地方就要掏出钱包把所有景点都玩到.一个城市有N个景点,其中N-1条无向道路链接成一个连通图.Bob ...
- header()相关
header("Content-type: text/html; charset=utf-8"); header("refresh:3;url=biaodan.php?n ...
- Unity3D Pro破解
Win破解方法: 全新安装Unity且未打开Unity后!!! 下载程序, 右键管理员运行, 点击Browse选择Unity安装目录内的Editor文件夹, 确定. 然后点击大按钮PATCH即可, 如 ...
- eclipse中整合springMvc,velocity和sitemesh
1.项目所需要jar包 (有些可能多余) 2.创建UserController 目录如下: package qust.thb.usermanage.controller; import org.s ...
- winkawaks模拟器
Winkawaks (温科沃克斯)win+ka(日文)+wa(也是日文)+k+s 最好的街机模拟器之一,与Nebula和MAME齐名,支持的游戏的有CAPCOM公司的CPS1,CPS2所有游戏,如三国 ...
- 使用shell脚本自动化对硬盘进行分区
在Linux系统中,可以使用fdisk 对硬盘进行分区,但是要手动执行很多命令,这样使用有很麻烦,现在记一个用fdisk 的脚本自动执行. #make partition dd count= fdis ...
- IOS路线图
存档,存档...