【转】mac环境下Android 反编译
一、需要的工具
- apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件。
- dex2jar:将反编译后的classes.dex文件转化为.jar文件。
- 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

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



3. 使用命令chmod +x 分别对apktool和apktool.jar文件进行提权
chmod +x apktool
chmod +x apktool.jar
4. 测试是否成功,终端输入apktool,若成功,如下图

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

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

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


第二步:使用dex2jar工具把classes.dex文件转化成.jar文件
1. 下载dex2jar并解压
2. 把classes.dex文件复制到解压后的dex2jar文件夹下,终端执行命令sh d2j-dex2jar.sh classes.dex
sh d2j-dex2jar.sh classes.dex

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

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


作者:AIllll
链接:https://www.jianshu.com/p/3a305f32c4a3
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
【转】mac环境下Android 反编译的更多相关文章
- mac 环境下Android 反编译源码
mac环境下Android 反编译 一.需要的工具 apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件. dex2jar:将反编译后的classes. ...
- mac环境下Android 反编译
连接地址: https://www.jianshu.com/p/3a305f32c4a3
- ubuntu下Android反编译详细教程-apktool,dex2jar,jd-gui的使用
转载请注明出处:http://blog.csdn.net/fightlei/article/details/52432161 最近在学习Android反编译的一些知识,虽然在网上搜到了很多相关的文章, ...
- MAC环境下 Android P 系统源码下载、编译、导入到AS、Pixel2xl刷机 实战
一.下载源码 1 . 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中: mkdir ~/bin PATH=~/bin:$PATH 2 . 下载 Repo 工具,并确保它可执行: curl ...
- Mac环境下Android Studio配置Git以及最基本使用
Git是分布式版本管理工具,现在使用十分广泛,相对于SVN,GIT的使用更加方便,在离线环境下,仍然可以进行版本控制工作.且速度十分快.在Windows下,先需要自行安装Git程序,网址git-scm ...
- android 反编译 for mac
android反编译现在来说的话很方便. windows上有不好好用的工具,当然我比较喜欢dex2jar 这个是比较好用的,打开他的文件目录会发现,里面有很多.sh .bat文件 那也就是说在wind ...
- Android反编译odex然后重新打包
#Android反编译odex然后重新打包 最近不知道怎么回事,突然把我那刷了氧OS的root了,然后就开始好奇起来氢OS所带有的那些本地化的东西,比如通话录音就是典型的一个之一.其中也做了很多的尝试 ...
- 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库
工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...
- Android反编译技术总结
一.Apk反编译工具及其使用方法 1.原理 学习反编译之前,建议先学习一下Apk打包的过程,明白打包完成后的Apk里面都有什么文件,各种文件都是怎么生成的. 这里有两篇AndroidWeekly中推荐 ...
随机推荐
- ExaWizards 2019 English D - Modulo Operations(DP)
Time Limit: 2 sec / Memory Limit: 1024 MB Score : 600600 points Problem Statement Snuke has a blackb ...
- ConcurrentHashMap 与 Hashtable
粘贴复制于:https://blog.csdn.net/lzwglory/article/details/79978788 集合是编程中最常用的数据结构.而谈到并发,几乎总是离不开集合这类高级数据结构 ...
- es6可变参数-扩展运算符
es5中参数不确定个数的情况下: //求参数和 function f(){ var a = Array.prototype.slice.call(arguments); var sum = 0; a. ...
- 开发中的Date处理
数据库中的日期格式有以下几种: date:年-月-日 time:时:分:秒 datatime:年-月-日 时:分:秒 timestrap: 例如,生日显示格式为'年-月-日',而创建/更新时间格式为' ...
- Java的clone():深复制与浅复制
Java中要想自定义类的对象可以被复制,自定义类就必须实现Cloneable中的clone()方法,如下: public class Student implements Cloneable { pr ...
- Azure - Create your first function using Visual Studio
Azure Functions lets you execute your code in a serverless environment without having to first creat ...
- 数据分析---《Python for Data Analysis》学习笔记【02】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 平衡树splay学习笔记#1
这一篇博客只讲splay的前一部分的操作(rotate和splay),后面的一段博客咕咕一段时间 后一半的博客地址:[传送门] 前言骚话 为了学lct我也是拼了,看了十几篇博客,学了将近有一周,才A掉 ...
- Java【第八篇】面向对象之高级类特性
static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有 ...
- 飞旋treap
虽然叫做非旋treap但是飞旋treap很带感所以就用这个名字了(SB) 这个东西是真的好写...... 主要的两个函数只有两个,rotate和splay,split和merge. merge就是大家 ...