APK反编译-[Android_YangKe]
想必大家都了解支付宝:“它是一款用户量过亿的产品,每个人多多少少在里面都会有一下自己的财富宝箱”。如果平均下来每个人的储蓄值是5000,那么5000乘以一个亿… 试想一下如果我们把支付宝给破解了,那么马先生(马云)是不是一纸老虎…
再试想一下成功破解支付宝后的场景,我就有动力学习反编译,反编译。
OK,反编译是一种应用安全反例,称之为计算机软件反向工程(Reverse engineering)大白话就是通过一些技术手段或者工具,逆向分析应用的架构、算法、以及实现原理,甚至源代码。
1.环境搭建
2.使用apktool反编译apk,随心所欲抓取自己需要的资源
3.使用jd-gui查看项目源码
环境搭建
Java环境检验
1.检查我们是否安装了Java环境(version>=1.7)。
2.终端中执行“java -version”命令,正常就会打印java版本号,以及build版本号,如找不到命令,我相信你有办法解决的。
环境配置
进行如下操作,需依托于科学上网,这个请自行准备。本文是基于Mac环境搭建的,Windows、Linux可以进官网进行配置。
-
apktool
此工具主要用于反编译apk,我们可以从里面获取到:anim、drawable、layout、menu、values等,且xml文件可以查看源码实现。
官网--->https://ibotpeaches.github.io/Apktool/install/ -
dex2jar
此工具主要用于获取apk文件中的classe.dex文件,并将此文件反编成xxx.jar文件,“xxx.jar”供于jd-gui工具查看源码。
官网--->https://sourceforge.net/projects/dex2jar/ -
jd-gui
此工具主要用于读取反编的jar(由dex2jar提供)。
官网--->http://jd.benow.ca
安装Apktool
![](https://img.haomeiwen.com/i3866329/a9d6acf5b5d43318.png)
-
Mac OS X:
Windows、Linux、Mac官网
1.将链接文件保存为apktool无需后缀名
2.下载apkt00l.jar文件
3.将下载好的xxx.jar重命名为 apktool.jar
4.将apktool.jar 和 apktool移动到/usr/local/bin目录(命令行前需加sudo)
5.使用chmod +x命令给文件添加权限
6.终端中执行apktool -version命令,正常情况则输出apktool版本号
使用apktool反编译apk
终端输入 apktool d -f /Users/kexueyang/Desktop/Alipay.apk -o /Users/kexueyang/Desktop/apkfile
命令解析:
- “d”执行反编译的指令
- “-f”移除指定目录里的所有文件
- “/Users/kexueyang/Desktop/shouban.apk”表示“apk”文件路径
- “-o”标识一个目录,后面紧跟接收反编译文件的目录路径
- “/Users/kexueyang/Desktop/apkfile”接受反编译文件的目录
下图就是我们反编译后的文件,其中res目录中的layout、drawable、value等文件夹内容几乎是可以直接拿过来使用的,小伙伴们可以自行探索。
![](https://img.haomeiwen.com/i3866329/94f09865a9c21d5e.png)
使用dex2jar生成xxx.jar
1.将原始apk文件重命名为“.zip”并解压获取dex文件
2.定位到dex2jar文件夹
3.执行dex2jar.bat xxx.dex
![](https://img.haomeiwen.com/i3866329/80b41c61581fbea8.png)
以上命令解析
- 定位到dex2jar目录
- 使用dex2jar生成xxx.jar文件,如文件生成成功,此文件位于dex2jar根目录中
使用jd-gui查看项目源码
1.打开刚刚我们安装好的jd-gui
2.将我们刚刚生成的jar文件拖入jd-gui
下图是使用jd-gui查看源码的部分视图,通过观察我们可以发现支付宝的大体框架、以及使用的部分技术,甚至部分核心源码。
![](https://img.haomeiwen.com/i3866329/779b9d56043f2f07.png)
分析:
- “.jar”是由“.dex”转换而来,“.jar”包含了项目的源码,由此我们逆推出“.dex”文件是我们项目源码的承载体。
工具总结:
- apktool:我是用来反编“.apk”格式文件的,我可以从apk分离出xml源码、图片等资源。
- dex2jar:我是用来处理xxx.dex文件的,我能将xxx.dex转为xxx.jar文件。
- jd-gui:我是用来查看xxx.jar源码的。
其他反编译工具推荐:jadx。
大致有以下优点:
- jadx可以反编译出.java文件
- 源码直接显示资源名称,而jd-gui里显示的是资源ID。
- 相对apktool、dex2jar、jd-gui而言环境配置相对简单很多。
如果有兴趣可以参考下
jadx下载地址:https://sourceforge.net/projects/jadx/
喜欢有帮助的话: 双击、评论、转发,动一动你的小手让更多的人知道!关注 帅比-杨