发布信息

非常好用的Android反编译工具jadx-.6.1

作者:软荐小编      2024-03-06 16:09:13     125

反编译软件有哪些_apk反编译软件_反编译软件是干什么用的

文字总数:3234字17张图片

预计阅读时间:9 分钟

一、简介

今天给大家介绍一款非常好用的Android反编译工具jadx。 jadx的功能非常强大。 对于我来说,基本满足了我日常的反编译需求。

jadx的优点:

图形界面。

拖放操作

反编译并输出Java代码。

导出 Gradle 项目。

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

接下来我们看看jadx的使用方法。

2.使用jadx2.1安装jadx

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

贾德克斯Github:

如果有兴趣,可以直接clone源码并在本地编译。 但大多数情况下,我们需要一个编译版本。 编译后的版本可以从sourceforge下载。

sourceforge 下载 jadx。

直接下载最新版本即可。 现在最新版本是jadx-0.6.1。 下载并解压后,你会得到这样的目录结构:

反编译软件有哪些_apk反编译软件_反编译软件是干什么用的

对于 Mac 或 Linux,请使用 jadx-gui。 Windows下,需要使用jadx-gui.bat。 双击即可直接运行。 如果有安全警告,请忽略它。 (以下文章主要以Mac环境进行说明,Windows下大部分操作类似)

2.2 使用jadx

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

打开后,您可以选择 apk、dex、jar、zip、class 或 aar 文件。 可以看到jadx支持的格式非常多。 基本上,它被编译成Java虚拟机可以识别的字节码,并且可以用于所有这些。 反编译。 除了选择文件之外,还可以直接将apk文件拖拽进去,非常实用。

手上随机找了一个Apk扔进去看看反编译效果

apk反编译软件_反编译软件有哪些_反编译软件是干什么用的

这是反编译的代码。 对于apk来说,一些xml资源也被反编译恢复,非常方便。

3、jadx的优点

jadx使用起来非常方便,而且提供的gui程序也非常好用。 我们首先介绍一下jadx-gui程序的一些有用的技术。

3.1 强大的搜索功能

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

您可以单击“导航”->“文本搜索”或“导航”->“类搜索”来激活它。 更方便的是快捷键。 我的本地快捷键是control + shift + f。 这因人而异。

反编译软件是干什么用的_反编译软件有哪些_apk反编译软件

Jadx的搜索支持四个维度,Class、Method、Field、Code。 我们可以根据我们搜索到的内容进行检查。 最大的范围是Code,它基本上是文本匹配搜索。 这里反编译出来的Apk集成了支付宝支付,所以可以搜索到支付宝内容。

3.2 直接搜索引用代码

有时我找到关键代码并想看看它在哪里被调用或引用。

jadx 也提供这方面的支持。 找到我们需要查看的类或方法,右键单击它并选择“查找用法”。

反编译软件是干什么用的_反编译软件有哪些_apk反编译软件

之后,它将帮助您搜索该项目中引用它的位置。

apk反编译软件_反编译软件是干什么用的_反编译软件有哪些

点击就可以直接跳转到,非常方便。

3.3 反混淆

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

反混淆函数可以给它们起一个特殊的名称,使其在本项目中具有唯一的名称,方便我们识别和查找。

可以在“工具”->“反混淆”中激活此功能。

接下来我们看看它是如何工作的。

反编译软件是干什么用的_apk反编译软件_反编译软件有哪些

开启去混淆后的效果如下:

反编译软件是干什么用的_apk反编译软件_反编译软件有哪些

如您所见,a 变为 p003a。 不知道大家觉得这样看是否更方便呢?

3.4 一键导出Gradle项目

虽然,jadx-gui可以直接读取代码,但是还是很方便的。 但毕竟不如我们常见的编辑器方便。 而恰巧 jadx 也支持将反编译的项目直接导出到 Gradle 编译的项目中。

可以通过文件 -> 另存为 gradle 项目来激活此功能。

反编译软件是干什么用的_apk反编译软件_反编译软件有哪些

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

反编译软件是干什么用的_apk反编译软件_反编译软件有哪些

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

4. jadx的错误处理

jadx在使用过程中也会出现一些错误。 以下是一些常见错误的总结。

4.1 代码不一致

有时,有些代码未完全反编译,您会看到带有 JADX 警告:不一致代码标志的错误。

apk反编译软件_反编译软件是干什么用的_反编译软件有哪些

这段代码已经不再是Java代码了,不利于我们阅读。 为了处理这种情况,jadx可以尝试打开Show不一致代码开关。 您可以在“文件”->“首选项”中找到它。

反编译软件是干什么用的_反编译软件有哪些_apk反编译软件

开启不一致代码后,我们再看一下这段代码,会感觉很熟悉。

反编译软件是干什么用的_apk反编译软件_反编译软件有哪些

这样处理的代码大部分都是伪代码,可能会出现错误。 下面我们就具体问题具体分析一下。

首选项中有很多开关。 如果您有兴趣,可以自行探索。

4.2 反编译错误或滞后

jadx反编译一些小Apks毫无压力。 但对于一些较重的Apk,一般是大于50MB的Apk,使用jadx反编译时可能会遇到卡顿的问题。

如果你查看终端中的Log输出,应该能够发现其实是OOM导致的。

反编译软件是干什么用的_apk反编译软件_反编译软件有哪些

针对内存不足引起的问题,官方也提供了一些解决方案。

1.减少处理线程数。

为了加快编译效率,jadx使用了多线程,多个线程会消耗更多的内存。 因此,减少反编译时的线程数是一个有效的方法。

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

如果您使用 jadx-gui,您可以通过在 Preferences 中配置处理线程计数来配置线程数。

2.修改jadx脚本

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

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

3.使用命令行命令

如果以上方法都不起作用,并且没有更好的办法,可以直接使用命令行,通过jadx命令进行编译。 并将线程数配置为1。虽然速度较慢,但​​大多数情况下都可以正常输出反编译代码。

例如:

jadx -d 输出 -j 1 类.dex

要更改命令,可以通过 jadx -h 命令查看。

反编译软件有哪些_反编译软件是干什么用的_apk反编译软件

仔细看看jadx命令配置的参数。 基本上你可以在Preferences中找到对应的配置项。 相互对比了解一下,应该不难发现如何使用。

5. 总结

jadx确实非常好用。 到这里它的使用基本上已经解释清楚了,还有一些小技巧。 自己尝试一下吧。

您在反编译过程中使用jadx有遇到什么问题吗? 如果大家有更好的工具推荐,可以在留言区给我留言apk反编译软件,我们一起讨论。

今天apk反编译软件,我在城厢墨影公众号后台回复了“成长”。 我会把我整理的一些学习资料发给大家,包括:Android反编译、算法、设计模式、虚拟机、Linux、Web项目源码。

反编译软件是干什么用的_反编译软件有哪些_apk反编译软件

相关内容 查看全部