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,代表输出目录

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

如果遇到这样的错误: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

过程如下:

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 文件,则表示成功:

当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币,供有需要的小伙伴下载使用。

Ubuntu环境下Android反编译apk教程相关推荐

  1. android mac转数据格式转换,mac环境下Android 反编译

    一.需要的工具 apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件. dex2jar:将反编译后的classes.dex文件转化为.jar文件. jd ...

  2. ubuntu下使用反编译apk,工具dex2jar和jd-gui

    ubuntu下使用反编译apk, 工具 1.首先使用dex2jar反编译 下载地址(建议下载最新版本,防止出现bug):http://code.google.com/p/dex2jar/downloa ...

  3. linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别的解决方法

    linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别到总结 1.下载jdk-6u26-linux-i586.bin并复制到在目标文件夹(例如/u ...

  4. android反编译apk文件

    android反编译apk文件 android运行的是.dex文件的二进制码,java运行的是.class文件的码,那么android是怎么将.java格式的文件转换为.dex的文件?------&g ...

  5. Android反编译apk修改版本号重新打包签名详细教程(超详细)

    文章目录 一.反编译工具介绍 1:apktool 获取资源文件 2:dex2jar(源码文件获取) 3:jd-gui 查看APK中classes.dex转化成出的jar文件,即源码文件 二.apkto ...

  6. [Android]反编译apk + eclipse中调试smali

    从来没有想过反编译apk是来的如此方便,并且还可以修改后重新编译运行,这比在win下修改pe容易多了,感谢apktool和smali工具的作者提供这么好的工具. 跟踪apk一般的做法是在反编译的sma ...

  7. 如何查看apk安装包源代码??Android反编译apk,解包,打包,签名一体化实测 ,修改图片音频软件名称版本号等入门

    首先下载反编译工具包 下载地址 链接:  https://zly520.lanzoui.com/ibtuxhf7rab 一.反编译工具介绍 首先 如果你想改动图片音频之类的,见末尾! 1.apktoo ...

  8. android反编译APK后,是smali文件,能反编译成dex文件

    我也面临相同的问题,但目前还没找到类似反编译smali文件的方法,一般得到dex文件只需要用WinRAR或其他压缩软件打开apk文件就能得到.但也有例外好像,技术先进了,今天遇到个apk用WinRAR ...

  9. Android 反编译 apk

    反编译需要使用到三个工具,获取apk里面的资源使用apktool,反编译Java代码使用dex2jar,查看反编译之后的jar文件使用jd-gui. 1.apktool工具可以反编译apk文件,然后拿 ...

  10. Android 反编译Apk提取XML文件

    Apktool https://ibotpeaches.github.io/Apktool/install/ 下载地址:Apktool https://bitbucket.org/iBotPeache ...

最新文章

  1. 油品调和计算软件_油品调合利器——中控supBlend油品在线优化调合解决方案
  2. 浮点数c语言,C语言浮点数运算
  3. OpenGL着色器将纹理应用于全屏四边形
  4. MySQL 高级- 输出参数
  5. idea创建多模块Springboot项目、导入多模块、删除多模块
  6. excel 中一些单词的意思
  7. fortran语言和python语言_Fortran常用语句
  8. CSDN有奖任务答案
  9. 经纬度转换,度转度分秒,度分秒转为度,前端js
  10. 测试脚本常用知识点python
  11. linux断开网络的命令,Linux常用网络命令总结
  12. Qt开发经验小技巧176-180
  13. 信息安全管理——仿射密码破解
  14. 一文看尽 6篇 CVPR2021 2D 异常检测论文
  15. strut1和strut2的区别
  16. easyExcel导出数据并设置单元格下拉数据
  17. Python正则表达式中的r
  18. win10 无法删除 注册表 蓝牙_Win10蓝牙无法删除设备蓝牙鼠标无法连接解决方法...
  19. SSD 1306显示屏 adafruit SSD 1306
  20. python挖矿代码_python检测挖矿特征的几种方式

热门文章

  1. 计算机无法安装新字体,怎么给电脑安装新字体
  2. 基于python管理系统论文_基于Python的学生信息管理系统
  3. 《HTTP权威指南》---http访问描述
  4. 新版USBCAN卡CAN分析仪的CANCANFD综合测试分析软件LKMaster主要功能介绍
  5. 伺服驱动器cn1引脚定义_伺服驱动器CN1引脚定义,和面板操作设置,跪求高手指点。说明书弄丢了.脉冲,使能,方向,接第几引脚...
  6. html转pdf乱码问题,java html 转 pdf 中文乱码
  7. ocjp 考试题之六
  8. 慕课软件质量保证与测试(第九章.课后作业)
  9. 步进电机驱动C语言代码,单片机控制步进电机系统(C语言源代码)
  10. 两个平面之间的关系—平行、垂直、相交