作者:JavaGuide
链接:https://www.zhihu.com/question/20264247/answer/2306405289
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

jadx 是一款功能强大的反编译工具,使用起来简单方便(拖拽式操作),不光提供了命令行程序,还提供了 GUI 程序。一般情况下,我们直接使用 GUI 程序就可以了。

jadx 支持 Windows、Linux、 macOS,能够帮我们打开.apk, .dex, .jar,.zip等格式的文件

就比如说我们需要反编译一个 jar 包查看其源码的话,直接将 jar 包拖入到 jadx 中就可以了。效果如下:

再比如说我们想看看某个 apk 的源码,我们拿到 apk 之后直接拖入进 jadx 中就可以了。效果如下:

jadx 安装

jadx 是一款开源软件,是可以免费使用的。我们可以在 jadx 的项目主页下载 jadx 最新版。

  • 项目地址:https://github.com/skylot/jadx
  • 下载地址:https://github.com/skylot/jadx/releases/tag/v1.3.1

我们直接下载第一个即可。

下载之后,解压下载好的 jadx 压缩文件后进入 bin 目录即可找到可执。

  • jadx:命令行版本
  • jadx-gui:图形操作界面版本

你也可以自己克隆源码,本地编译,这也是我比较推荐的方式。

git clone https://github.com/skylot/jadx.git

jadx 由 Java 语言编写,使用 Gradle 进行构建。克隆到本地之后,你可以直接使用 Gradle 命令进行构建:

cd jadx
# Windows 平台使用 gradlew.bat 而不是 ./gradlew
./gradlew dist

你也可以直接使用 IDE 打开,然后像运行普通 Java 程序那样使用它:

jadx 使用

反编译文件

通过 File -> Open files... 打开需要反编译的文件或者直接将文件拖拽进 jadx 中就可以了。

从上图可以看出,jadx 支持.apk, .dex, .jar,.zip,.class等格式的文件。

搜索功能

jadx 自带强大的搜索功能,支持多种匹配模式。

通过 Navigation 即可打开搜索功能,我们可以选择搜索指定的类,方法,属性,代码,文件,甚至是注释。

查看类,变量或者方法使用情况

对于某个类、变量或者方法,我们还可以查看哪些地方使用了它。

直接选中对应的类、变量或者方法,然后点击右键选择 Find Usage 即可。

很快,jadx 就会帮你找出整个项目有哪些地方使用了它。

添加注释

我们还可以自定义注释到源代码中。

选中对应的位置之后,点击右键选择 Comment 即可。

反混淆

一般情况下,为了项目的安全,我们在打包发布一个 apk 之前都会对其代码进行混淆加密比如用无意义的短变量去重命名类、变量、方法,以免代码被轻易破解泄露。

经过混淆的代码在功能上是没有变化的,但是去掉了部分名称中的语义信息。

为了代码的易读性,我们可以对代码进行反混淆。

在 jadx 中,我们通过 Tools -> Deobfuscation 即可开启反混淆功能。

专注 Java 原创干货分享,大三开源JavaGuide ,目前已经 115k+ Star。

原创不易,欢迎点赞分享,欢迎关注 @JavaGuide,我会持续分享原创干货!加油,冲

jadx 支持 Windows、Linux、 macOS,能够帮我们打开.apk, .dex, .jar,.zip等格式的文件相关推荐

  1. 蓝牙鼠标windows linux,Windows+Linux+MacOS三大系统共用蓝牙鼠标

    首先要做的是在三个系统里都匹配一次.让系统留下蓝牙鼠标的信息.然后先去MacOS系统里去查看LinkKeys,再到Linux或Windows下去修改相应值. 一.MacOS(Mojave)下命令行输入 ...

  2. vnc远程linux命令,用VNC实现远程桌面共享(支持Windows, Linux, …) | 易水博客

    用VNC实现远程桌面共享(支持Windows, Linux, -) VNC,全称为Virtual Network Computing,它是一个桌面共享系统.它的功能,类似于windows中的远程桌面功 ...

  3. Traffmonetizer利用vps小鸡赚钱,支持windows,linux,Android,MacOS多平台

    注册可获得5美元,Traffmonetizer不怎么占用CPU和内存以及流量,流量单价也比较高. 机器越多收益越多,支持paypal usdt btc Payoneer等提现 Traffmonetiz ...

  4. ev1百家云视频解密工具、ev1视频提取工具,支持Windows、MacOS、Linux

    介绍: 根据你的系统进入相对应的文件夹 打开 终端 键入:ev1_decode 后面空格隔开键入 ev1文件路径 回车.转换将在瞬间完成 网盘下载地址: http://www.bytepan.net/ ...

  5. 【转】Windows Linux MacOS操作系统的区别

    首先,不管是Windows操作系统.Linux操作系统还是MacOS操作系统,甚至包括操作系统的鼻祖UNIX操作系统,最早都是用C语言编写的. 实际上UNIX操作系统和C语言都是由贝尔实验室的汤普森( ...

  6. cmake使用方法详解 - Windows Linux MacOS cmake安装教程

    一 什么是CMake,为什么要使用它 CMake 是用于构建.测试和软件打包的开源跨平台工具, 为什么要用cmake,是因为我们需要一个构建系统解决如下问题: 1.你想避免硬编码路径 2.您需要在多台 ...

  7. anki ios android 同步,让记忆更轻松的Anki,支持Windows,Linux,iOS,Android平台

    Anki介绍 Anki是一个记忆辅助软件,它可以让记忆过程变得更加轻松容易.因为,相比传统方法他更加高效更加智能,利用它你可以大大降低你的学习时间,或者你可以在同样长的时间内学习更多的内容. 任何人如 ...

  8. Compose-jb图片加载库load-the-image,适用于KMM Compose desktop桌面端(Windows,Linux,MacOs)

    前言 Android平台上有很多优秀的图片加载框架,比如Glide,Picasso,Fresco 而Compose-jetpack上的图片加载框架有Coil 但Compose-jb上却暂时没有图片加载 ...

  9. ssh linux工具下载,openssh下载 (支持windows+linux)

    OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现.它用安全.加密的网络连接工具代替了 telnet.ftp. rlogin.rsh 和 rcp 工具.OpenSSH 支持 ...

最新文章

  1. java导入包大全_eclipse快速导入jar包的相关操作步骤
  2. 2019年上半年收集到的人工智能卷积神经网络干货文章
  3. Mac OS X 常用快捷键一览
  4. 二叉树的建立和递归遍历
  5. Python 微信机器人-用itchat库下载微信接收到的语音、图片等资源实例演示
  6. 顶层const和底层const的区别
  7. 逆向工程核心原理读书笔记-API钩取之隐藏进程(一)
  8. U Sparkle 开发者计划招募中!
  9. python 月报_python实践--月报分析之获取jira缺陷数据
  10. 第七章:react-ui
  11. P30年订单或超2000万 正与苹果抢流水线
  12. QT每日一练day16:QMessageBox消息对话框
  13. Video-Swin-Transformer (二)
  14. linux下部署Tesseract OCR及调用
  15. svn 同步 linux,linux SVN 中 配置钩子 实现 线上项目同步
  16. PMP试题 每日一练快速提分
  17. 路飞学城-Python开发-第一章
  18. Windows 7各版本的主要功能区别是什么 有何不同
  19. c++学习笔记:黑客攻击系统-功能菜单
  20. 一本通2056:【例3.7】最大的数

热门文章

  1. Hadoop集群垃圾箱配置 | fs.trash.interval
  2. 儿童身高体重记录检测表
  3. 023-zabbix性能优化中的几个中肯建议
  4. java label对齐方式_java – 在BorderLayout中对齐JLabel和JTextField
  5. 用什么方法可以改变摄像机逆光补偿
  6. 计算机基础英语文档,最强计算机基础英语总结
  7. 企业家故事|香港最后一位少爷,走了(下)
  8. 读书笔记与思考(一)《MIT深度思考法》
  9. 热烈祝贺:广东省快递行业协会加入2023上海国际快递物流展
  10. 和我的清华室友经过20天得出的python爬取网站数据!!!