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
APK反编译-[Android_YangKe]_第1张图片
yangke.png
  • Mac OS X:
    Windows、Linux、Mac官网
    1.将链接文件保存为apktool无需后缀名
    2.下载apkt00l.jar文件
    3.将下载好的xxx.jar重命名为 apktool.jar
    4.将apktool.jarapktool移动到/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

命令解析:

  1. “d”执行反编译的指令
  2. “-f”移除指定目录里的所有文件
  3. “/Users/kexueyang/Desktop/shouban.apk”表示“apk”文件路径
  4. “-o”标识一个目录,后面紧跟接收反编译文件的目录路径
  5. “/Users/kexueyang/Desktop/apkfile”接受反编译文件的目录

下图就是我们反编译后的文件,其中res目录中的layout、drawable、value等文件夹内容几乎是可以直接拿过来使用的,小伙伴们可以自行探索。

APK反编译-[Android_YangKe]_第2张图片
yangke.png
使用dex2jar生成xxx.jar

1.将原始apk文件重命名为“.zip”并解压获取dex文件
2.定位到dex2jar文件夹
3.执行dex2jar.bat xxx.dex

yangke.png

以上命令解析

  • 定位到dex2jar目录
  • 使用dex2jar生成xxx.jar文件,如文件生成成功,此文件位于dex2jar根目录中
使用jd-gui查看项目源码

1.打开刚刚我们安装好的jd-gui
2.将我们刚刚生成的jar文件拖入jd-gui

下图是使用jd-gui查看源码的部分视图,通过观察我们可以发现支付宝的大体框架、以及使用的部分技术,甚至部分核心源码。

APK反编译-[Android_YangKe]_第3张图片
yangke.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/

喜欢有帮助的话: 双击、评论、转发,动一动你的小手让更多的人知道!关注 帅比-杨

你可能感兴趣的:(APK反编译-[Android_YangKe])