APK反编译-[Android_YangKe]

作者: Android_YangKe | 来源:发表于2017-08-15 19:07 被阅读335次

    想必大家都了解支付宝:“它是一款用户量过亿的产品,每个人多多少少在里面都会有一下自己的财富宝箱”。如果平均下来每个人的储蓄值是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
    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等文件夹内容几乎是可以直接拿过来使用的,小伙伴们可以自行探索。

    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查看源码的部分视图,通过观察我们可以发现支付宝的大体框架、以及使用的部分技术,甚至部分核心源码。

    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]

      本文链接:https://www.haomeiwen.com/subject/viserxtx.html