• Ubuntu环境下Android反编译apk教程


    1. 前言

            在工作中,当开发某个功能,或者通过对比两个apk的表现形式不同,想看看这个apk中的内部文件,无奈只是一个纯apk,而且不是自己开发的,又没有源码,那怎么办呢?这个时候你就需要用到反编译,好了,本篇文章来讲一下Ubuntu下反编译环境的安装和步骤。

    2. 工具

            反编译apk,我们需要如下3个开发工具:Apktool   dex2jar   jd-gui

            Apktool : 这个工具是用来反编译apk中的资源文件,如res,AndroidManifest.xml等

            dex2jar :    这个工具是用来反编译apk的代码

            jd-gui   :  这个用来查看代码的工具

    2.1 apktool

    官网下载地址:https://ibotpeaches.github.io/Apktool/install/

    我们是Ubuntu开发环境,当然下载Linux版本的,如下:

     Installation for Apktool

    • Linux:
      1. Download Linux wrapper script (Right click, Save Link As apktool)
      2. Download apktool-2 (find newest here)
      3. Rename downloaded jar to apktool.jar
      4. Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
      5. Make sure both files are executable (chmod +x)
      6. Try running apktool via cli

    按照上面的描述,我们一步一步操作

    1.  第一步下载是apktool脚本执行文件,需要VPN翻墙才能下载到,文章结尾会把需要的工具统一打包共享出来

    2.  下载最新的apktool_x.x.x.jar 包
    3.   把下载的jar包重命名为 apktool.jar
    4. 把apktool 脚本文件 和 apktool.jar 这两个文件拷贝到 /usr/local/bin 下(root权限)

    5.   给这两个文件添加可执行权限

    最后结果如下:

    工具安装完成后,我们开始反编译apk,然后查看里面的资源文件

    步骤一: 把需要反编译的apk放置某个文件夹中,终端命令进入到该目录,执行

    apktool d test.apk
    

       d就是decode解码的意思

    apktool d  test.apk -o <dir> 

        -o  是output,代表输出目录

        该命令可用于指定反编译后文件的存储位置,其中

    表示目标存储位置

    如果遇到这样的错误:Destination directory  already exists. Use -f switch if you want to overwrite it.,表示你所指定的目录已存在,可以改用命令:

    apktool d -f  test.apk -o <dir> 

          -f 是force 表示强制覆盖

    执行过程如下:

     成功后,会在同目录下生成一个test文件夹

    步骤二: test文件夹中所有的资源文件都是可以查看的,不是乱码

    字符串:

    AndroidManifest.xml:

    2.2 dex2jar

            工具下载地址:dex2jar - Browse Files at SourceForge.net

        把下载最新的dex2jar-x.xzip包解压到当前目录, 找到目标的脚本文件 d2j-dex2jar.sh

            接下来我们在反编译apk代码:

    步骤一: 我们把test.apk 后缀名修改为 test.zip, 然后解压到当前目录

     打开test文件夹,有个classes.dex 该文件中存放的就是java代码

     步骤二: 接下来将classes.dex文件拷贝到d2j-dex2jar的解压目录下,执行命令

    sh d2j-dex2jar.sh classes.dex

    过程如下:

    1. home@home-MS-7B89:~/worktools/decodeapk/dex2jar-2.1/dex-tools-2.1$ sh d2j-dex2jar.sh classes.dex
    2. dex2jar classes.dex -> ./classes-dex2jar.jar

      接下来会在同级目录下生成一个 classes-dex2jar.jar 文件,则表示成功:

     当dex 文件转换成 jar文件后,我们仍然无法直接查看jar中的class具体内容,这里我们需要借助于

    jd-gui这个查看代码的工具

    2.3 jd-gui

            工具下载地址: Java Decompiler

    选择Linux版本: jd-gui-1.6.6.deb

     步骤一: 首先我们先安装一下这个工具,命令如下:

    sudo dpkg -i jd-gui-1.6.6.deb

    安装完成后,在Ubuntu 应用程序列表中找到jd-gui 工具打开

    步骤二: 通过菜单选项 File -- openFile 打开刚才反编译出来的 classes-dex2jar.jar包

     查看里面任何一个class文件,不会显示乱码

            好了,到这里就大功告成了,本文中所有需要的开发工具打包后上传到这里: Android反编译apk工具包-Android文档类资源-CSDN下载 不需要C币,供有需要的小伙伴下载使用。

  • 相关阅读:
    聊聊对RPC的理解
    uniapp数据点击的时候将数据存入同一个本地存储中并且最大限度5个
    类的内部工作机制就是原型操作
    vsphere虚拟网络组件
    独享IP地址的层级划分和管理:打造稳定高效的网络架构
    C++学习笔记
    二进制加减法计算
    微信公众号之底部菜单
    2024年一年一度的618正式结束了,苹果与华为手机销量看看谁是大赢家?
    【Rust 日报】2022-06-19 Rust 1.63 新特性令人期待
  • 原文地址:https://blog.csdn.net/u012514113/article/details/126538718