一、需要的工具

  1. apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件。
  2. dex2jar:将反编译后的classes.dex文件转化为.jar文件。
  3. jd-gui:用于将.jar文件转换成java代码。

1.下载apktool 点击这里下载 ,里面有两个文件,一个是.jar,一个是自己写的脚本.sh 
注:最新的apktool.jar 文件可以点击这里下载
.sh脚本是自写脚本可不用更新最新,下载的jar文件名必须是apktool.jar,不能是apktool-2.0.1.jar这样的形式

2.将shell脚本”apktool.sh”和”apktool.jar”放到 “/usr/local/bin”目录下

3.增加这两个文件可执行权限,chmod a+x file 
在命令提示符下执行:
cd /usr/local/bin
chmod a+x apktool.sh
chmod a+x sh”和”apktool.jar

4.执行apktool.sh d file.apk
注:file.apk 是在当前目录下的需要反编译的apk文件,需注意目录是否正确
例:我的apk文件放在/Users/netcorner/Downloads/ingwill.apk
执行步骤为:
cd /Users/netcorner/Downloads/
apktool.sh d wdj.apk

完成以上步骤就可以反编译出apk中的所有资源文件了

 

 
 

二、反编译步骤

第一步:使用apktool工具对APK进行反编译

1. 下载apktool

 
下载apktool

2. 把下载好的apktool脚本和apktool.jar文件移动到 /usr/local/bin 文件夹下

 
菜单栏点击「前往」→ 「前往文件夹」
 
前往 /usr/local/bin 文件夹
 
将apktool脚本和apktool.jar文件复制到此文件夹

3. 使用命令chmod +x 分别对apktool和apktool.jar文件进行提权

chmod +x apktool
chmod +x apktool.jar

4. 测试是否成功,终端输入apktool,若成功,如下图

 
apktool安装完成

5. 运行apoktool脚本进行反编译

①. 把你需要反编译的apk文件也复制到 /usr/local/bin 文件夹下
②. 终端输入命令 apktool d xxx.apk回车,等待执行完毕

apktool.sh d xxx.apk
 
执行脚本反编译apk文件

③. 执行完毕后目录下会生成反编译apk的对应文件夹

 
反编译成功

但是我们在反编译apk后的文件夹里并没有看到classes.dex文件,这时候就需要在上述命令行添加-s,表示禁止将dex文件解码成smali

apktool.sh d -s xxx.apk
 
禁止将dex文件解码成smali
 
成功生成classes.dex文件

第二步:使用dex2jar工具把classes.dex文件转化成.jar文件

1. 下载dex2jar并解压
2. 把classes.dex文件复制到解压后的dex2jar文件夹下,终端执行命令sh d2j-dex2jar.sh classes.dex

sh d2j-dex2jar.sh classes.dex
 
dex2jar成功

3. 执行完毕后,会在文件夹下生成一个.jar文件,里面就是java源码

 
生成的.jar文件

第三步:使用JD-GUI软件查看jar包下的java源码

1.下载并安装jd-gui
2. 打开安装好的JD-GUI,直接把第二步生成的.jar文件拖进去,就能看到反编译出来的java源码了

 
打开JD-GUI
 
把jar包拖进去就可以看到java源码了

作者:AIllll
链接:https://www.jianshu.com/p/3a305f32c4a3
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

【转】mac环境下Android 反编译的更多相关文章

  1. mac 环境下Android 反编译源码

    mac环境下Android 反编译 一.需要的工具 apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件. dex2jar:将反编译后的classes. ...

  2. mac环境下Android 反编译

    连接地址: https://www.jianshu.com/p/3a305f32c4a3

  3. ubuntu下Android反编译详细教程-apktool,dex2jar,jd-gui的使用

    转载请注明出处:http://blog.csdn.net/fightlei/article/details/52432161 最近在学习Android反编译的一些知识,虽然在网上搜到了很多相关的文章, ...

  4. MAC环境下 Android P 系统源码下载、编译、导入到AS、Pixel2xl刷机 实战

    一.下载源码 1 . 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中: mkdir ~/bin PATH=~/bin:$PATH 2 . 下载 Repo 工具,并确保它可执行: curl ...

  5. Mac环境下Android Studio配置Git以及最基本使用

    Git是分布式版本管理工具,现在使用十分广泛,相对于SVN,GIT的使用更加方便,在离线环境下,仍然可以进行版本控制工作.且速度十分快.在Windows下,先需要自行安装Git程序,网址git-scm ...

  6. android 反编译 for mac

    android反编译现在来说的话很方便. windows上有不好好用的工具,当然我比较喜欢dex2jar 这个是比较好用的,打开他的文件目录会发现,里面有很多.sh .bat文件 那也就是说在wind ...

  7. Android反编译odex然后重新打包

    #Android反编译odex然后重新打包 最近不知道怎么回事,突然把我那刷了氧OS的root了,然后就开始好奇起来氢OS所带有的那些本地化的东西,比如通话录音就是典型的一个之一.其中也做了很多的尝试 ...

  8. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...

  9. Android反编译技术总结

    一.Apk反编译工具及其使用方法 1.原理 学习反编译之前,建议先学习一下Apk打包的过程,明白打包完成后的Apk里面都有什么文件,各种文件都是怎么生成的. 这里有两篇AndroidWeekly中推荐 ...

随机推荐

  1. 第一章· Redis入门部署及持久化介绍

    Redis简介 Redis安装部署 Redis持久化 Redis简介 软件说明: Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. ...

  2. [模板] 匈牙利算法&&二分图最小字典序匹配

    匈牙利算法 简介 匈牙利算法是一种求二分图最大匹配的算法. 时间复杂度: 邻接表/前向星: \(O(n * m)\), 邻接矩阵: \(O(n^3)\). 空间复杂度: 邻接表/前向星: \(O(n ...

  3. BZOJ4762 最小集合(动态规划+容斥原理)

    https://www.cnblogs.com/AwD-/p/6600650.html #include<iostream> #include<cstdio> #include ...

  4. Html | Vue | Element UI——引入使用

    前言 做个项目,需要一个效果刚好Element UI有,就想配合Vue和Element UI,放在tp5.1下使用,但是引入在线的地址各种报错,本地引入就完美的解决了问题! 代码 __STATIC_J ...

  5. WinForm登录验证

    概述:输错三次禁止登陆,15分钟后才能继续. 图示: Form1代码: using System; using System.Configuration; using System.Data.SqlC ...

  6. P1313 计算系数 HMR大佬讲解

    今天,HMR大佬给我们讲解了这一道难题. 这道题明显的二项式定理,自然想到了要用到杨辉三角了.基本思路就是先用for循环求出杨辉三角,这样就求出了x的n次方的系数和y的m次方的系数. 这是大佬的AC代 ...

  7. LoadRunner【第四篇】参数化

    参数化的定义及使用场景 定义:将脚本中的特定值用变量替代,该变量值是变化的(注意:这个值是我们自己创建的,不是服务器返回的). 使用参数化: 1.业务考虑,不允许相同信息 2.真实模拟不同用户 3.真 ...

  8. jmeter5.1测试dubbo接口

    dubbo接口功能介绍 客户端输入uncleyong(当然,也可以是其他字符串),服务端返回hello uncleyong 开发dubbo服务jmeter客户端 idea中创建模块dubbo_jmet ...

  9. Java之函数式接口

    函数式接口 概述:接口中只有一个抽象方法 下面介绍的可能很抽象,理解不了,至少在我看来单独的这几个借口是没有用的,跟最下面说的 Stream流一起用才会有效果 函数式接口,即适用于函数式编程场景的接口 ...

  10. 洛谷 P1411 树

    最近在做些树形DP练练手 原题链接 大意就是给你一棵树,你可以断开任意数量的边,使得剩下的联通块大小乘积最大. 样例 8 1 2 1 3 2 4 2 5 3 6 3 7 6 8 输出 18 我首先想的 ...