在 MAC 上搭建 Android 反编译环境主要就是三个东西:apktool
、dex2jar
、jd-gui
。
apktool 工具主要是将 apk 文件进行反编译,反编译之后的代码为 smali
代码。
dex2jar 工具主要是将 apk 文件文件转成 jar
文件,最后再使用 jd-gui 工具查看刚刚转成的 jar
文件。
apktool、dex2jar、jd-gui 这三个工具是跨平台的,不仅能在 Windows 上使用,也可以在 MAC 上使用。
它们的相应的网站地址为:
-
apktool 官网和下载地址:https://ibotpeaches.github.io/Apktool/install/
-
dex2jar Github 主页:https://github.com/pxb1988/dex2jar 官网和下载地址:https://bitbucket.org/pxb1988/dex2jar/downloads
-
jd-guit Github 主页:https://github.com/java-decompiler/jd-gui 官网和下载地址:http://jd.benow.ca/
MAC 上安装 apktool
安装方法如官网所示:
首先还是需要检查 Java 环境是否配好,需要 Java 1.7 的版本,不过我在 MAC 上 Java 1.8 的版本安装也没问题。
步骤如下:
- 右键点击下载
wrapper script
脚本,并将它保存重命名为apktool
,不要带任何文件后缀名。 - 到 https://bitbucket.org/iBotPeaches/apktool/downloads 网站去下载 apktool.jar 文件,并将它重命名为
apktool.jar
。 - 将刚刚下载的
apktool.jar
文件和apktool
文件移到到/usr/local/bin
目录中去。 - 使用
chmod +x
命令赋予上面两个文件执行权限。 - 运行
apktool
命令即可验证 apktool 是否安装正确。
如果出现如下图片所示的,则代表安装成功了。
jd-gui 和 dex2jar 安装
jd-gui 和 dex2jar 工具直接到官网上下载解压缩就可以使用了。
dex2jar 是一个命令行工具,而 jd-gui 是一个有可视化界面的工具。
测试使用
apktool 使用
反编译 apk 的命令为 :
apktool d[ecode] [options] <file_apk>
编译 apk 的命令为:
apktool b[uild] [option] <app_path>
如上图,则是将一个 apk 文件进行反编译了,会生成一个与 apk 名称对应的文件夹,这里面就是反汇编之后的东西,其中 smali 文件夹就是汇编代码。
如上图,则是将 app-release 目录重新编译生成 apk 文件了。
在 app-release 目录中会多出两个 dist
和 build
目录。其中,dist
目录就是生成的 apk 文件目录,而 build 目录就是其他文件目录了。
不过,目前重新编译出来的 apk 文件是不能安装的,因为还没有签名。关于如何给 apk 文件添加签名,应该还需要再来一篇博客学一下才行。
dex2jar 使用
dex2jar 是将 apk 文件转化成 jar 文件的,其实就是将 apk 里的 classes.dex
文件转化成 jar 文件。
将下载的 dex2jar 文件解压之后,进入文件夹内,将 d2j-dex2jar.sh
和 d2j_invoke.sh
文件赋予可执行权限。
chmod +x d2j-dex2jar.sh d2j_invoke.sh
之后就可以运行如下脚本来将对应的 apk 文件转化成 jar 文件了。
./d2j-dex2jar.sh /Users/meizu/Demo/Android/AndroidCrackDemo/app/app-release.apk
还在当前目录下会生成一个 app-release-dex2jar.jar
的文件。这时就需要打开 jd-gui 软件,将生成的 jar 包拖进去即可。
参考
http://blog.csdn.net/yanzi1225627/article/details/48215549
知识星球
公众号音视频开发进阶对应的知识星球,一个编程开发领域的专业圈子,贩卖知识和技巧! ※ 入群须知:了解该星球能提供的价值和帮助,在提问时务必阐述好背景,附带相关的信息。 iOS 用户可以加我微信 ezglumes 邀请你进星球,有疑问也可以加我微信咨询。 ※ 星球内容: 基础教程: 在知识星球连载的干货教程,可以在专栏中找到,随着时间的推移,教程也会越来越多: - 音视频基础概念 - WebRTC 入门教程及源码实践 - 播放器教程及源码实践 - OpenGL 和特效开发教程 - Vulkan 入门教程 部分内容可以在博客 https://glumes.com 中检索到,后面会在星球里持续更新. 干货分享: 涵盖了移动开发和音视频工程领域的绝大部分,从项目实战角度出发,提升能力,包括但不限于以下领域: - Android/iOS 移动开发 - Camera 开发 - 短视频编辑 SDK 项目实践 - 在线直播和推流 - WebRTC 开发 - 播放器基础和提高 - OpenGL 图像渲染及特效开发 - C++ 基础和提高 - FFmpeg 使用和分析 - 干货资源和书籍分享 不止于技术方面的,各种 IT 新闻、茶余饭后、生活趣事也欢迎大家分享!!! 技术答疑解惑: 针对上述基础教程和干货分享的答疑,另外还有音视频和 IT 开发中的各种交流讨论。 - 基础知识点答疑 - 工业项目实践答疑 - 问题排查思路分析 一个 BUG 排查很久,不如来星球里提个问题,效率提升百倍。 求职和面试辅导: 一站式职场服务,每份工作都值得用心对待!!! - 面试题和面试经验分享 - 简历修改和模拟面试 - 大厂内推和信息同步 - 职场经验分享 - 职业规划和发展分析 ※ 星主和合伙人介绍 星主是公众号音视频开发进阶的作者,也是网站 https://glumes.com 的作者,曾参与过抖音、剪映等头部音视频 APP 底层 SDK 的开发。 合伙人也是在头条、快手从事音视频架构师的职位,具有多年的音视频开发经验,能力圈覆盖了音视频的绝大多数领域,资深音视频从业人员为你保驾护航。
微信公众号
扫描下面的二维码关注我的微信公众号《音视频开发进阶》,推送更多精彩内容!
添加我的微信 ezglumes 拉你入音视频与图形图像技术群一起交流学习~

原创文章,转载请注明来源: 搭建 Android 反编译环境