Android 反编译神器jadx的使用

article/2025/10/14 18:47:10

一、前言

今天介绍一个非常好用的反编译的工具 jadx 。jadx 的功能非常的强大,对我而言,基本上满足日常反编译需求。

jadx 优点:

  1. 图形化的界面。
  2. 拖拽式的操作。
  3. 反编译输出 Java 代码。
  4. 导出 Gradle 工程。

这些优点都让 jadx 成为我反编译的第一选择,它可以处理大部分反编译的需求,基本上是我反编译工具的首选。

接下来我们就来看看,jadx 如何使用吧。

二、使用 jadx

2.1 安装 jadx

jadx 本身就是一个开源项目,源代码已经在 Github 上开源了。

Jadx Github :

github.com/skylot/jadx

有兴趣可以直接 clone 源代码,然后本地自己编译。但是多数情况下,我们是需要一个编译好的版本。编译好的版本,可以在 sourceforge 上下载到。

sourceforge 下载 jadx。

sourceforge.net/projects/ja…

直接下载最新版就可以了,现在的最新版是 jadx-0.6.1 。下载好解压之后,你会获得这样的目录结构:

 

jadx-pathjadx-path

 

对于 Mac 或者 Linux,使用 jadx-gui ,Windows 下就需要使用 jadx-gui.bat 了,双击可以直接运行,如果有安全警告,忽略它就可以了。(后文主要以 Mac 环境为讲解,Windows 下的大部分操作都是类似的)

2.2 使用 jadx

前面提到,直接双击 jadx-gui 就可以直接运行。运行之后,会启动一个 terminal ,在这里你可以看到你所有操作的输出,错误日志也会输出在这里。

打开之后,你可以选择一个 apk、dex、jar、zip、class、aar 文件,可以看到 jadx 支持的格式还是挺多的,基本上编译成 Java 虚拟机能识别的字节码,它都可以进行反编译。除了选择一个文件,还可以直接将 apk 文件,拖拽进去,这一点非常好用。

我随便找了一个手边的 Apk ,丢进去,看看反编译后的效果。

 

jadx-runjadx-run

 

这里面就是反编译后的代码了,对于 apk 而言,一些 xml 的资源,也一并被反编译还原回来了,非常的方便。

三、jadx 的优点

jadx 使用起来非常的方便,而提供的 gui 程序,也很好用。下面开始介绍 jadx-gui 程序的一些好用的技巧。

3.1 强大的搜索功能

jadx 提供的搜索功能,非常强大,而且搜索速度也不慢。

你可以点击 Navigation -> Text Search 或者 Navigation -> Class Search 激活它,更方便的还是快捷键,我本机的快捷键是 control + shift + f,这个就因人而异了。

 

text-searchtext-search

 

jadx 的搜索,支持四种维度,Class、Method、Field、Code,我们可以根据我们搜索的内容进行勾选,范围最大的就是 Code ,基本上就是文本匹配搜索。这里反编译的 Apk 集成了支付宝支付,所以能搜到 alipay 的内容。

3.2 直接搜索到引用的代码

有时候找到关键代码了,还想看看在哪些地方调用或者引用了它。

jadx 也提供了这方面的支持,找到我们需要查看的类或者方法,选中点击右键,选择 Find Usage。

 

find-Usagefind-Usage

 

之后,它就会帮你搜索出,在这个项目中,哪些地方引用了它。

 

usage-searchusage-search

 

点击就可以直接跳转过去,非常的方便。

3.3 deobfuscation

一般 Apk 在发布出去之前,都是会被混淆的,这基本上国内 App 的标配。这样一个类,最终会被混淆成 a.b.c ,方法也会变成 a.b.c.a() ,这样其实非常不利于我们阅读。我们很难看到一个 a.java 的文件,就确定它是哪一个,还需要根据包名来区分。

而 deobfusation 功能,可以为它们其一个特殊的名字,这样它在这个项目中,名字就唯一了,方便我们识别和搜索。

这个功能可以在 Tools -> deobfusation 中激活。

接下来来看看它的效果。

 

deo-beforedeo-before

 

开启 deobfusation 之后的效果如下:

 

deo-afterdeo-after

 

可以看到,a 变成了 p003a。不知道这样看你觉得有方便一些吗?

3.4 一键导出 Gradle 工程

虽然,jadx-gui 可以直接阅读代码,还是很方便的。但是毕竟没有我们常见的编辑器来的方便。而正好 jadx 还支持将反编译后的项目,直接导出成一个 Gradle 编译的工程。

可以通过 File -> Save as gradle project 来激活这个功能。

 

save-gradlesave-gradle

 

最终输出的目录,是可以直接通过 Android Studio 打开的。

 

gradle-projectgradle-project

 

不过虽然 AS 可以直接打开它,但是大多数情况下你是编译不起来的。但是这样的功能,主要是为了借助 AS 强大的 IDE 功能,例如方法跳转、引用搜索等等,让我们阅读起来更方便。

四、jadx 的错误处理

jadx 在使用过程中,也会有一些错误情况,这里总结一些比较常见的错误。

4.1 inconsistent code

有时候有代码,反编译的不完整,你会看到 JADX WARNING : inconsistent code 标志的错误。

 

incon-beforeincon-before

 

这一段代码,就已经不是 Java 的代码了,不利于我们的阅读。而 jadx 为了应对这样的情况,可以尝试开启 Show inconsistent code 开关。你可以在 File -> Preferences 中找到它。

 

show-preshow-pre

 

开启 inconsistent code 之后,我们再来看看这段代码,就感觉亲切了。

 

code2code2

 

这样处理的代码,大部分为伪代码,可能会有错误的地方,具体问题具体分析吧。

Preferences 中,还有很多开关,有兴趣的可以自行摸索一下。

4.2 反编译错误或者卡顿

jadx 反编译一些小的 Apk,一点压力都没有,但是对于一些比较重的 Apk,一般 Apk 大于 50MB 的,你都可能遇到使用 jadx 反编译的时候卡死的问题。

如果你看了 terminal 中 Log 输出,你应该可以发现,实际上它是因为 OOM 引起的。

 

oomoom

 

官方对于这样因为内存不足引发的问题,也提供了一些解决方案。

1、减少处理的线程数。

jadx 为了加快编译的效率,所以是使用多线程处理的,而多个线程会耗费跟多的内存。所以减小反编译时候的线程数,是一个有效的方法。

如果使用命令行的话,可以使用 -j 1 参数,配置线程数为 1,不配置的话,默认线程数为 4。

而使用 jadx-gui 的话,可以在 Preferences 中,通过配置 Processing threads count 来配置线程数。

2、修改 jadx 脚本

直接编辑 ./bin 目录下的 jadx 脚本,配置找到 DEFAULT_JVM_OPTS ,将它设置为 DEFAULT_JVM_OPTS="-Xmx2500M" ,就可以配置当前使用的内存大小。

如果是 Windows 系统,你需要编辑 jadx.bat 文件。

3、使用命令行命令

如果以上方式都不好用,在没有更好的办法的情况下,你可以直接使用命令行,通过 jadx 的命令进行放编译。并将线程数配置为 1 ,这样虽然慢一些,但是多数情况下,是可以正常输出反编译后的代码的。

举个例子:

jadx -d out -j 1 classes.dex

更过命令,可以通过 jadx -h 命令进行查看。

 

jadx-helpjadx-help

 

仔细看看 jadx 命令配置的参数,基本上都可以在 Preferences 中,找到对应的配置项,相互对照理解一下,应该不难发现它的使用方式。

五、总结

jadx 确实非常的好用,到这里基本上已经把它的使用,都讲解清楚了。

你在反编译的过程中,使用 jadx 有没有碰到什么问题?还有什么更好的工具推荐,可以在留言区给我留言,我们一起讨论一下。


http://chatgpt.dhexx.cn/article/gEZj1JtK.shtml

相关文章

jadx工具windows下载

Release v1.2.0 skylot/jadx GitHubDex to Java decompiler. Contribute to skylot/jadx development by creating an account on GitHub.https://github.com/skylot/jadx/releases/tag/v1.2.0选择第三个jadx-gui-1.2.0-with-jre-win.zip解压exe可正常使用

jadx反编译—下载和使用

一、在GitHub上直接下载 https://github.com/skylot/jadx 可以下这个版本: 二、运行图形化界面 1、将zip文件解压后定位到在lib文件夹中,在此处打开命令行 2、运行jadx-gui-0.7.1.jar(前提是已经装好了JDK1.8) 命令如下&#xf…

jadx初识

一.jadx介绍 一款相对流行的反编译工具 下载:https://github.com/skylot/jadx/releases/tag/v1.0.0 解压后得到这么几个文件: 启动:(以下来两个文件都可以) 启动后的界面: 二.使用 打开之后,你可…

反编译工具之jadx

反编译神器之 - jadx git网址: https://github.com/skylot/jadx简介 首先推荐功能强大的jadx,官方网站为:https://github.com/skylot/jadx,可以直接在releases页面下载其最新版,解压即可使用。 安装 Windows下安装 …

Android 反编译工具 jadx-gui

jadx-gui 是一种基于 jadx 项目的图形界面工具,用于反编译 Android 应用程序的工具。通过使用jadx-gui,开发人员可以打开 APK(Android应用程序包)文件,并查看其反编译的源代码。这对于分析、理解和调试 Android 应用程…

jadx工具介绍及使用

往期推荐 签名校验之“xx银行” Jeb调试ctf(破解密码 Crack the key) ”川报观察“协议分析(抓不到包) 实战分析43XX的HTTPS协议 需要相关资料的朋友,可以【加入此处即可打包获取】 jadx工具是一款反编译利器,同时支持命令行和图形界面&#xff0c…

Java jar反编译工具 jadx

jadx 支持 Windows、Linux、 macOS 项目下载地址 https://github.com/skylot/jadx/releases 按需下载 1.下载zip解压后,进入 bin 目录即可找到执行脚本 jadx:命令行版本 jadx-gui:图形操作界面版本2.下载exe本地双击运行,将…

kali Linux 逆向环境pyenv、Frida、objection、jadx、的安装

目录 1.pyenv安装和使用 1.1pyenv 简介 1.2pyenv 常用命令 1.3pyenv安装和使用 2.Frida安装 2.1Fraida简介 2.1Fraida安装 2.2objection安装 2.3objection常用命令 查看日志 查看包含Frida的日志信息 查看objection的帮助命令 2.3.0进入objection REPL环境 2.3.1直接…

jadx动态调试安卓apk

选用某ctf题目的apk作为调试目标。 工具: 雷电模拟器 jadx1.3.2 步骤: 1、在雷电模拟器安装apk: 2、在jadx打开apk: 3、检查模拟器的adb服务状态: 必须确保模拟器里的adb服务启动,且状态正常&#xff0…

android 反编译 jadx,jadx gui下载 jadx(Android反编译gui工具) v0.6.1 官方版 下载-脚本之家...

jadx是一款Android反编译gui工具,它支持apk、dex、jar、class、zip、aar等文件。jadx操作方便,反编译后的代码可读性高,同时还拥有较完善的gui界面,除去混淆部分的代码,jadx已经非常接近源代码了。需要的朋友可以下载试…

jadx反编译

刚发现的一个反编译神器jadx,对比之前的apktool跟dex2jar,jadx胜在可读性好太多,apktool后的smali长的跟汇编语言一样,dex2jar产生的源码也经常出现奇奇怪怪的语法,让我理解不能. jadx GitHub 地址:https://github.com/skylot/jadx 下载或克隆后,在目录下运行 ./gradlew dis…

新版jadx-gui导入dex会提示Bad checksum

新版jadx-gui导入dex会提示Bad checksum 问题解决方案 问题 今天将一个app脱壳后,拿到DEX,导入jadx中时,弹出了一个错误 也就是会校验dex的checksum,此时如果关闭按钮,忽略错误,会导致dex文件反编译失败&…

jadx学习记录01

原计划是先学习 okHttp 和拦截器,再用 Android Studio 来 demo 下,奈何 Android Studio 装完 sync 一直失败,后续换个电脑再试下、一并整理 okHttp 相关知识点。 今日任务:用 jadx 分析小红书 6.90 版本的 java 代码,…

【Android】Jadx动态调试应用

【Android】Jadx动态调试应用 1. 前言 Jadx已支持动态调试APP,但一直没试过,从逆向角度尝试走一遍流程并熟悉,方便日后翻阅。 2. 相关知识 2.1 动态调试原理 动态调试的原理可以概括为以下几个步骤: 启动应用程序进程&#x…

移动安全工具-jadx

1 需求 官网链接&#xff1a; GitHub - skylot/jadx: Dex to Java decompiler 2 语法 jadx - dex to java decompiler, version: 1.4.5usage: jadx [options] <input files> (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab) options:-d, --output-dir …

jadx反编译工具的使用

目录 jadx工具介绍 jadx工具的安装 jadx工具的使用 jadx遇到的问题 jdk和jre的区别 jadx工具介绍 decompile Dalvik bytecode to java classes from APK, dex, aar, aab and zip files将Dalvik 字节码从APK&#xff0c;dex,aar,aab&#xff0c;zip文件里反编译为java类de…

Android 反编译利器,jadx 的高级技巧

一、前言 今天介绍一个非常好用的反编译的工具 jadx(Java,Dex反编译器) 。jadx 的功能非常的强大&#xff0c;对我而言&#xff0c;基本上满足日常反编译需求。 jadx 优点&#xff1a; 图形化的界面。拖拽式的操作。反编译输出 Java 代码。导出 Gradle 工程。 这些优点都让…

app逆向(11)| jadx反编译工具的安装

文章目录 一、什么是jadx二、安装一、什么是jadx JADX是一款优秀的Android反编译工具,支持命令行和图形化界面,能为我们省下大量的反编译时间。 二、安装 前提首先需要安装java的jdkjadx的github地址:https://github.com/skylot/jadx 进入,下载压缩包。 解压压缩包后,…

jadx:好用的反编译工具

最近换了新公司&#xff0c;新公司比较高大上都是用的mac电脑开发Android&#xff0c;让我这个window党情何以堪&#xff0c; 任务&#xff1a;我的导师给了我们的一个开发的apk&#xff0c;他让我看打包混淆了没&#xff0c;我就翻一下我以前的工具&#xff0c;尼玛&#xff…

Android反编译——jadx工具

Android反编译工具——jadx 介绍反编译jar包反编译apk文件jadx下载jadx使用反编译文件搜索功能查看类、变量或者方法使用情况添加注释反混淆 本篇博文为转载原创作者公众号&#xff1a;JavaGuide 介绍 jadx 是一款功能强大的反编译工具&#xff0c;使用起来简单方便&#xff08…