一个专注音视频领域问答的小圈子

在 MAC 上搭建 Android 反编译环境主要就是三个东西:apktooldex2jarjd-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

安装方法如官网所示:

install-apktool-on-mac

首先还是需要检查 Java 环境是否配好,需要 Java 1.7 的版本,不过我在 MAC 上 Java 1.8 的版本安装也没问题。

步骤如下:

  1. 右键点击下载 wrapper script 脚本,并将它保存重命名为 apktool ,不要带任何文件后缀名。
  2. https://bitbucket.org/iBotPeaches/apktool/downloads 网站去下载 apktool.jar 文件,并将它重命名为 apktool.jar
  3. 将刚刚下载的 apktool.jar 文件和 apktool 文件移到到 /usr/local/bin 目录中去。
  4. 使用 chmod +x 命令赋予上面两个文件执行权限。
  5. 运行 apktool 命令即可验证 apktool 是否安装正确。

如果出现如下图片所示的,则代表安装成功了。

apktool-install-success

jd-gui 和 dex2jar 安装

jd-gui 和 dex2jar 工具直接到官网上下载解压缩就可以使用了。

dex2jar 是一个命令行工具,而 jd-gui 是一个有可视化界面的工具。

jd-gui

测试使用

apktool 使用

反编译 apk 的命令为 :

apktool d[ecode] [options] <file_apk>

编译 apk 的命令为:

apktool b[uild] [option] <app_path>

apktool-decode

如上图,则是将一个 apk 文件进行反编译了,会生成一个与 apk 名称对应的文件夹,这里面就是反汇编之后的东西,其中 smali 文件夹就是汇编代码。

apktool-build

如上图,则是将 app-release 目录重新编译生成 apk 文件了。

在 app-release 目录中会多出两个 distbuild 目录。其中,dist 目录就是生成的 apk 文件目录,而 build 目录就是其他文件目录了。

不过,目前重新编译出来的 apk 文件是不能安装的,因为还没有签名。关于如何给 apk 文件添加签名,应该还需要再来一篇博客学一下才行。

dex2jar 使用

dex2jar 是将 apk 文件转化成 jar 文件的,其实就是将 apk 里的 classes.dex 文件转化成 jar 文件。

将下载的 dex2jar 文件解压之后,进入文件夹内,将 d2j-dex2jar.shd2j_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 包拖进去即可。

jd-gui-view-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 拉你入音视频与图形图像技术群一起交流学习~

wechat-account-qrcode

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