今天给各位分享Android逆向工程工具:jadx高效使用指南的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
图形界面。拖放操作。反编译并输出Java代码。导出Gradle 项目。这些优点使jadx成为我反编译的首选。它可以处理大部分的反编译需求,基本上是我反编译工具的首选。
接下来我们看看jadx的使用方法。
二、使用 jadx
2.1 安装 jadx
jadx本身就是一个开源项目,源码已经开源在Github上。
贾德克斯Github:
https://github.com/skylot/jadx
如果有兴趣,可以直接clone源码并在本地编译。但大多数情况下,我们需要一个编译版本。编译后的版本可以从sourceforge下载。
sourceforge 下载jadx。
https://sourceforge.net/projects/jadx/files/
直接下载最新版本即可。现在最新版本是jadx-0.6.1。下载并解压后,你会得到这样的目录结构:
jadx-path 对于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,扔进去,看到了反编译效果。
jadx-run包含反编译的代码。对于apk来说,一些xml资源也被反编译恢复,非常方便。
三、jadx 的优点
jadx使用起来非常方便,提供的gui程序也非常好用。让我们从jadx-gui 程序的一些有用提示开始。
3.1 强大的搜索功能
jadx提供的搜索功能非常强大,而且搜索速度也不慢。
您可以单击“导航-文本搜索”或“导航-类搜索”来激活它。更方便的是快捷键。我的本地快捷键是control + shift + f。这因人而异。
text-searchjadx的搜索支持Class、Method、Field、Code四个维度。我们可以根据我们搜索的内容进行检查。最大的范围是Code,它基本上是文本匹配搜索。这里反编译的Apk集成了支付宝支付,所以可以搜索到支付宝内容。
3.2 直接搜索到引用的代码
有时我找到一个关键代码,想看看它在哪里被调用或引用。
Jadx 也提供这方面的支持。找到我们需要查看的类或方法,右键单击它并选择“查找用法”。
find-Usage之后,它会帮助你搜索在这个项目中引用它的地方。
点击usage-search可以直接跳转到,非常方便。
3.3 deobfuscation
一般来说,Apk在发布之前会出现混乱。这基本上是国内app的标准。这样的类最终会被混淆为a.b.c,方法也会变成a.b.c.a(),这对于我们的阅读来说其实是非常不利的。我们很难看到a.java 文件并确定它是哪一个。我们还需要根据包名来区分。
反混淆函数可以给它们起一个特殊的名称,使其在本项目中具有唯一的名称,方便我们识别和查找。
该功能可以在工具-deobfusion 中激活。
接下来让我们看看它是如何工作的。
deo-before开启反混淆后的效果如下:
deo-之后可以看到a变成了p003a。不知道大家觉得这样看是否更方便呢?
3.4 一键导出 Gradle 工程
jadx-gui虽然可以直接读取代码,但是还是很方便的。但毕竟不如我们常见的编辑器方便。而恰巧jadx 也支持将反编译的项目直接导出到Gradle 编译的项目中。
可以通过文件- 另存为gradle 项目来激活此功能。
save-gradle的最终输出目录可以直接通过Android Studio打开。
gradle-project 然而,虽然AS可以直接打开,但大多数情况下你无法编译它。但这样的功能主要是利用AS强大的IDE功能,比如方法跳转、引用搜索等,让我们阅读起来更加方便。
四、jadx 的错误处理
jadx在使用过程中,也会出现一些错误。以下是一些常见错误的总结。
4.1 inconsistent code
有时,有些代码未完全反编译,您会看到带有JADX WARNING : 不一致代码标志的错误。
incon-before代码不再是Java代码,不利于我们阅读。为了处理这种情况,jadx可以尝试打开Show不一致代码开关。您可以在“文件”-“首选项”中找到它。
show-pre开启不一致代码后,我们再看一下这段代码,会感觉很熟悉。
code2中处理的大部分代码都是伪代码,可能存在错误。我们来具体分析一下具体问题。
首选项中有很多开关。如果您有兴趣,可以自行探索。
4.2 反编译错误或者卡顿
jadx反编译一些小Apks毫无压力。但对于一些较重的Apk,一般如果Apk大于50MB,使用jadx反编译时可能会遇到卡顿的问题。
如果你看一下终端中的Log输出,应该能够发现其实是OOM导致的。
oom官方还针对内存不足引起的问题提供了一些解决方案。
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命令查看。
jadx-help 仔细查看jadx 命令配置的参数。基本上你可以在Preferences中找到对应的配置项。相互对比了解一下,应该不难发现如何使用。
五、总结
jadx确实很好用,这里基本上已经解释清楚了它的使用方法。
您在反编译过程中使用jadx有遇到什么问题吗?如果大家有更好的工具推荐,可以在留言区给我留言,我们一起讨论。
今天,我在承香墨影公众号后台回复“成长”。我会把我整理的一些学习资料发给大家,包括:Android反编译、算法、设计模式、kotlin、虚拟机、Linux、Web项目源码。
【Android逆向工程工具:jadx高效使用指南】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
想深入了解jADX的使用方法吗?这个标题看起来很不错啊。
有14位网友表示赞同!
我一直都在想要尝试反编译,看到这个教程感觉很激动!
有13位网友表示赞同!
学习Android开发必备技能吧!希望这篇文章能详细介绍高级技巧。
有20位网友表示赞同!
jAdx真是强大!期待了解更多高级用法!
有20位网友表示赞同!
看完文章后我就能更深入地分析APK包啦!
有15位网友表示赞同!
反编译这个领域对我来说很新奇,会好好学习一下!
有11位网友表示赞同!
这篇文章一定能让我在Android开发中提升水平!
有14位网友表示赞同!
学习 Android 反编译的最佳工具和技巧,不容错过!
有5位网友表示赞同!
jADX 的使用场景很多啊,期待深入了解这些高级用法!
有11位网友表示赞同!
掌握了高级技巧后,反编译APK包会更轻松啦!
有8位网友表示赞同!
分享一些实际案例,能更好地理解jADX的高级技巧!
有17位网友表示赞同!
我想看看可以用高级技巧分析哪些有趣的Android程序!
有19位网友表示赞同!
这篇文章一定能让我的Android开发技能进一步提升!
有19位网友表示赞同!
学习 jADX 的高级技巧,是成为一名优秀Android开发者的一步!
有20位网友表示赞同!
反编译技术太牛了吧!希望文章能分享一些实际操作方法!
有20位网友表示赞同!
想突破安卓开发的瓶颈,这篇文章应该很有帮助!
有16位网友表示赞同!
这个工具和技巧肯定会对我的学习有很大的启发!
有14位网友表示赞同!
期待了解更多关于jADX 的深度解析!
有16位网友表示赞同!
希望文章能讲解一些比较复杂的Android反编译场景!
有13位网友表示赞同!
阅读这篇关于 Android 反编译的的文章,能让我更加了解apk包内部结构!
有14位网友表示赞同!