在Mac上进行反编译apk,需要三个工具,分别为(附下载地址):

  1. apktool,下载Mac版

    • 作用:资源文件获取,能够提取出图片文件和布局文件进行使用查看
  2. dex2jar,下载最新的即可,目前是2.0版
    • 作用:将apk反编译成java源代码(classes.dex转化成jar文件)
  3. jd-gui,下载Mac版,jd-gui-osx-1.4.0.tar
    • 作用:查看APK中classes.dex转化成出的jar文件,即源代码文件

安装

一、apktool

  1. 将下载的apktool_xx.jar(apktool_xx.jar重命名为apktool.jar)和apktool.txt(apktool.txt重命名为apktool)

    • 可以直接右键重命名
    • 也可以再命令行输入,例如:mv ./apktool.txt ./apktool
  2. 给予这两个文件,可读可写可执行的权限,chmod +x apktool.jarchmod +x apktool
  3. 将两个文件(apktool.jar&apktool)移动到/usr/local/bin(需要root)sudo mv apktool.jar&apktool /usr/local/bin/
  4. 然后apktool -v,出现如下信息代表成功了
~ apktool -v
Apktool v2.3.4 - a tool for reengineering Android apk files
with smali v2.2.2 and baksmali v2.2.2
Copyright 2014 Ryszard Wiśniewski <brut.alll@gmail.com>
Updated by Connor Tumbleson <connor.tumbleson@gmail.com>

二、dex2jar

  1. 解压,tree看一下大致目录结构
  2. 给予这两个文件,可读可写可执行的权限,chmod +x d2j-dex2jar.shchmod +x d2j_invoke.sh
.
├── d2j-baksmali.bat
...(省略)
├── d2j_invoke.sh
└── lib
├── antlr-runtime-3.5.jar
├── asm-debug-all-4.1.jar
├── d2j-base-cmd-2.0.jar
├── d2j-jasmin-2.0.jar
├── d2j-smali-2.0.jar
├── dex-ir-2.0.jar
├── dex-reader-2.0.jar
├── dex-reader-api-2.0.jar
├── dex-tools-2.0.jar
├── dex-translator-2.0.jar
├── dex-writer-2.0.jar
└── dx-1.7.jar 1 directory, 32 files

三、jd-gui

  1. 下载后解压即可
  2. 如果是最新的Mac OS系统,可能会出现打不开的情况,是因为java版本问题,java -version查看当前版本,我电脑上java version "9.0.4"
  3. 最新的Mac OS系统,主要原因是使用的是jdk 1.9 ,而jd-gui使用的是jdk 1.8。所以我们需要安装在mac上安装java8,按照网上安装java教程,不用更多设置java8路径等等
  4. 右键jd-gui.app,显示包内容,用你常用的文本编辑器打开Info.plist文件,修改<key>JVMVersion</key> <string>1.7+</string>这一行<key>JVMVersion</key> <string>1.8</string>,保存后退出
  5. 基本所有的安装就结束了

反编译开始

  1. apktool d -s ./xx.apk,执行成功后,会在当前目录下生成一个 xx文件夹,点击去就看到相关apk的资源文件了,拿到其中的classes.dex
  2. sh dex2jar.sh classes.dex,执行成功后会生成一个classes_dex2jar.jar文件
  3. 打开jd-gui,把上面的java包拖进去,然后再就可以导出java源代码了

Mac下对Android apk反编译的更多相关文章

  1. Android apk反编译基础(apktoos)图文教程

    本文主要介绍了Android apk反编译基础,使用的工具是apktoos,我们将用图文的方式说明apktoos工具的使用方式,你可以参考这个方法反编译其它APK试试看了 很久有写过一个广工图书馆主页 ...

  2. 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译

    反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...

  3. Android APK反编译(一)

    apk是安卓工程打包的最终形式,将apk安装到手机或者模拟器上就可以使用APP.反编译apk则是将该安卓工程的源码.资源文件等内容破解出来进行分析. 一.APK反编译基本原理 1.APK分析 apk文 ...

  4. 【转】Android APK反编译就这么简单 详解(附图)

    转载地址:http://blog.csdn.net/vipzjyno1/article/details/21039349 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂 ...

  5. Android APK反编译详解(附图)

    转载自http://blog.csdn.net/sunboy_2050/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而 ...

  6. Android APK反编译easy 详解

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...

  7. Android APK反编译就这么简单 详解(附图)

    在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用 ...

  8. Android APK反编译详解(附图)(转)

    这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件, ...

  9. (转)Android APK反编译详解

    转载地址:http://blog.csdn.net/ithomer/article/details/6727581 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到 ...

随机推荐

  1. FFmpeg滤镜使用指南

    文件夹 1. FFmpeg滤镜文档 2. 演示样例   2.1 缩放   2.2 视频加速   2.3 滤镜图,链和滤镜关系   2.4 多个输入覆盖同一个2x2 网格   2.5 转义字符   2. ...

  2. BNU 13024 . Fi Binary Number 数位dp/fibonacci数列

    B. Fi Binary Number     A Fi-binary number is a number that contains only 0 and 1. It does not conta ...

  3. string转date

    /*util-->sql*/ java.util.Date utdt; java.sql.Date sqldt =null; SimpleDateFormat simFormat = new S ...

  4. Kernel trick----PRML读书笔记

    Many linear parametric models can be re-cast into an equivalent 'dual representstion' in which the p ...

  5. PCB CE工具取Genesis JOB与STEP内存地址 方法分享

    今天无意中在硬盘上找到了<CE工具取Genesis JOB与STEP内存地址 >视频, 这是2013年初由郭兄(永明)远程时录制的一段视频,特别感谢郭兄指引与帮助, 想当初要不是你推出全行 ...

  6. 元素类型以及overflow,white-space等属性

    1:预格式化标签:<pre></pre>2:overflow属性="visible/hidden(隐藏)"/scroll/auto(自动)/inherit; ...

  7. [Swift通天遁地]二、表格表单-(14)实时调整表单元素的激活和失效

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. [Swift通天遁地]四、网络和线程-(3)线程组:使用DispatchGroup(调度组)对线程进行分组管理

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. Java高质量20问

    问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个 ...

  10. JavaScript学习四

    2019-06-01 09:09:23 坚持,加油!!! 函数的学习 <html> <head> <script type="text/javascript&q ...