参考

https://blog.csdn.net/fengyuzhengfan/article/details/80286704

思路

  1. ApkTool 解压 apk 文件
    • dex:它是 classes 文件通过 DEX 编译后的文件格式,用于在 Dalvik 虚拟机上运行的主要代码部分
    • resources:以 resources 以及 res 目录为代表的 Android 程序中所需要的一些资源,如图片资源,颜色资源,字符串,布局等
    • assets:assets 目录下存放的是原生资源文件,比如在里面存放字体,铃声等
    • manifest:以 AndroidManifest.xml 为代表的 Android 清单文件,清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码
  2. 查看工具—— ApkTool、dex2jar、JD-GUI
    • ApkTool:是一款应用在 Apk 上的逆向工程的工具,它有编译、反编译、签名等功能,在这篇文章中会讲解如何利用 ApkTool 查看 apk 的 xml 文件、AndroidManifest.xml 和图片等
    • dex2jar:顾名思义,这款工具的作用主要是将 dex 文件转换成 jar 文件,转换成 jar 后我们才好借助 JD-GUI 来查看反编译 dex 后的代码
    • JD-GUI:一款 Java 反编译器 GUI,通过它我们能查看到反编译后的 dex 的代码,通常需要配合 dex2jar 使用

ApkTool

https://ibotpeaches.github.io/Apktool/install/

  1. 安装 ApkTool

    1. 将下载好的 apktool 文件与 apktool_2.3.1.jar 文件准备好,并将 apktool_2.3.1.jar 更名为 apktool.jar;

    2. 将 apktool.jar 与 apktool 移动到 /usr/local/bin 目录下 (可以通过在终端中输出命令 open /usr/local/bin 来打开这个目录);

    3. 为上述两个文件增加可执行权限,即在终端中输入并执行:

      1
      2
      3
      4
      chmod +x apktool.jar
      chmod +x apktool

      #在终端输入 apktool 看是否可以运行,如果不可以需要在系统偏好设置中打开安全与隐私中点击仍要运行 apktool.jar
  2. 使用-解压apk文件

    1
    apktool d xxx.apk //该命令执行后会在同级目录下生成一个与你编译的apk同名的目录

dex2jar

https://sourceforge.net/projects/dex2jar/files/

1
2
3
4
dex2jar 解压
cd /你的dex2jar解压目录 也就是上面图中存放class.dex文件的目录
sh d2j-dex2jar.sh classes.dex
sh d2j-dex2jar.sh classes2.dex

问题Permission denied d2j_invoke.sh

为 d2j_invoke.sh 增加权限:

1
sudo chmod +x d2j_invoke.sh //sudo chmod +取消权限

JD-GUI

http://jd.benow.ca/