jadx初识

article/2025/10/14 18:57:04

一.jadx介绍

  一款相对流行的反编译工具

  下载:https://github.com/skylot/jadx/releases/tag/v1.0.0

  

  解压后得到这么几个文件:

  

  启动:(以下来两个文件都可以)

  

  

   启动后的界面:

  

 

二.使用

  

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

·  

三、jadx 的优点

  1.强大搜索功能

jadx 提供的搜索功能,非常强大,而且搜索速度也不慢。你可以点击 Navigation -> Text Search 或者 Navigation -> Class Search 激活它,更方便的还是快捷键,我本机的快捷键是 ctrl + shift + f,这个就因人而异了

  
jadx 的搜索,支持四种维度,Class、Method、Field、Code,我们可以根据我们搜索的内容进行勾选,范围最大的就是 Code ,基本上就是文本匹配搜索。

  2.直接搜索到引用的代码

有时候找到关键代码了,还想看看在哪些地方调用或者引用了它。jadx 也提供了这方面的支持,找到我们需要查看的类或者方法,选中点击右键,选择 Find Usage。

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

`

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

  3.deobfuscation

一般 Apk 在发布出去之前,都是会被混淆的,这基本上国内 App 的标配。这样一个类,最终会被混淆成 a.b.c ,方法也会变成 a.b.c.a() 
,这样其实非常不利于我们阅读。我们很难看到一个 a.java 的文件,就确定它是哪一个,还需要根据包名来区分。 而 deobfusation 功能,可以为它们起一个特殊的名字,这样它在这个项目中,名字就唯一了,方便我们识别和搜索。 这个功能可以在 Tools
-> deobfusation 中激活。 接下来来看看它的效果。

  

    开启 deobfusation 之后的效果如下:

  

  4. 一键导出 Gradle 工程

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

  

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

 

四.jadx 的错误处理

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

  1. inconsistent code

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

  

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

  

  

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

  

  

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

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

  2. 反编译错误或者卡顿

jadx 反编译一些小的 Apk,一点压力都没有,但是对于一些比较重的 Apk,一般 Apk 大于 50MB 的,你都可能遇到使用 jadx 反编译的时候卡死的问题。如果你看了 terminal 中 Log 输出,你应该可以发现,实际上它是因为 OOM 引起的。

  

官方对于这样因为内存不足引发的问题,也提供了一些解决方案。
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 命令配置的参数,基本上都可以在 Preferences 中,找到对应的配置项,相互对照理解一下,应该不难发现它的使用方式。

 

 转载自:https://www.jianshu.com/p/e5b021df2170

转载于:https://www.cnblogs.com/tjp40922/p/11161131.html


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

相关文章

反编译工具之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…

决策树原理总结(ID3、C4.5、CART)+ 常见面试问题

系统梳理树类型算法原理加常见面试问题 类容按照决策树、Adaboost、GBDT、XGBoost、LightGBM 顺序进行梳理 本次的重点类容是决策树的CART树 ID3、C4.5介绍请转移到&#xff1a;ID3、C4.5的原理与案例介绍 1. CART树 ID3与C4.5虽然可以通过多叉树尽可能的挖掘特征信息&#…

机器学习之决策树算法

1-1 基本流程 决策树是一个有监督分类与回归算法。 决策树的生成只考虑局部最优&#xff0c;相对的&#xff0c;决策树剪枝则考虑全局最优。 一、概念&#xff1a; 决策树&#xff1a;是一种树形结构&#xff0c;其中每个内部节点表示一个属性上的判断&#xff0c;每个分支代表…