Ubuntu环境下Android反编译apk教程

Ubuntu环境下Android反编译apk教程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.   给这两个文件添加可执行权限

最后结果如下:

Ubuntu环境下Android反编译apk教程

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

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

apktool d test.apk

   d就是decode解码的意思

apktool d  test.apk -o <dir> 

    -o  是output,代表输出目录

    该命令可用于指定反编译后文件的存储位置,其中<dir>表示目标存储位置

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

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

      -f 是force 表示强制覆盖

执行过程如下:

Ubuntu环境下Android反编译apk教程

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

Ubuntu环境下Android反编译apk教程

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

Ubuntu环境下Android反编译apk教程

字符串:

Ubuntu环境下Android反编译apk教程

AndroidManifest.xml:

Ubuntu环境下Android反编译apk教程

2.2 dex2jar

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

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

Ubuntu环境下Android反编译apk教程

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

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

Ubuntu环境下Android反编译apk教程

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

Ubuntu环境下Android反编译apk教程

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

sh d2j-dex2jar.sh classes.dex

过程如下:

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

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

Ubuntu环境下Android反编译apk教程

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

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

2.3 jd-gui

        工具下载地址: Java Decompiler

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

Ubuntu环境下Android反编译apk教程

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

sudo dpkg -i jd-gui-1.6.6.deb

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

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

Ubuntu环境下Android反编译apk教程

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

Ubuntu环境下Android反编译apk教程

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35416.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注