在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. Struts2之类型转换器的使用

    一.学习案例:通过在输入页面(input.jsp)用同一个输入框同一时候输入username和password,通过类型转换器在输出页面(output.jsp)分别输出username和passwor ...

  2. java(JSP)中几种获取项目路径方式

    在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getPro ...

  3. jenkins对接gitlab和git

    1 需要的插件 jenkins的git插件和jenkins的gitlab插件. 2 对接gitlab 在系统配置中,随便起一个连接的名字,设置url,可以直接用ip地址,端口号默认是80,不需要写明. ...

  4. codeforces 920 EFG 题解合集 ( Educational Codeforces Round 37 )

    E. Connected Components? time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  5. RDA EQ&频响曲线

    相关数据: FAC->Audio->EQ Setting EQ Band - Gain Frequency Q Factor 1.5 FAC->Audio->PEQ // En ...

  6. cloudstack ---部署的架构

    cloudstack跟KVM一起部署的架构 下图是CloudStack跟kvm一起部署的架构: 在每个kvm的宿主机上都需要部署agent程序. cloudstack跟vsphere一起部署的架构 下 ...

  7. 手动安装jar包到Maven本地仓库

    接手别人的一个项目,Maven工程,导入后,某些jar包找不到,然后从同事那复制Maven本地仓库的文件夹到我的电脑,发现依旧找不到.问题大致总结为:本地maven仓库存在jar,但是依然报Missi ...

  8. PCB MS SQL 标量函数(CLR) 实现Socket发送消息

    在PCB业务系统中,数据库中的数据总是被应用端主动连接数据库并操作数据,是否想过可以让数据库主动的将数据推送出去呢! 答应其实是可以的.比如有这样的应用场景! 当SQL SERVER数据库满足某个条件 ...

  9. JavaScript中相等==和严格相等===的区别

    在JavaScipt中==(相等)和===(严格相等,strick equality 也有译作“恒等”.“全等”)用于比较两个值是否相等,两个运算符允许任意类型的操作数.如果操作数相等则返回true, ...

  10. Java注解Annotation的用法 - 自定义Annotation实现

    Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据. Java语言中的类.方法.变量.参数和包等都可以被标注.和Javadoc不同,Java标注可以通过反射获取标 ...