查看原文
其他

2.4万Star的反编译利器:Jadx

小秋 开源前哨 2021-02-01

【导语】一款逆向工具,能反编译jar、class、apk、dex等文件,精致小巧,支持语法高亮、全文检索、方法跟踪,Star数23.8k。


简介


Jadx是一个逆向工程工具,不仅能反编译jar、class文件,也包括apk、dex、aar和zip中的Dalvik字节码,将AndroidManifest.xml及其他资源从resources.arsc中解码出来,还包含了反混淆功能。


jadx有两个版本,分别为命令行版本和UI版本,jadx-gui支持高亮关键字语法,支持跳转到类、方法、字段声明的地方,能找到方法调用的地方,支持全文搜索,能直接拖拽文件。本文介绍UI版本的用法,命令行版本功能一样,只是需要使用命令行操作而已,有兴趣的自行上github上查看命令用法的说明。


下载安装


下载地址是:

https://github.com/skylot/jadx/releases/latest 

源码地址是:

https://github.com/skylot/jadx


我下载了jadxgui的zip包,解压就能使用。解压后在bin目录中双击jadx-gui.bat即可运行jadx,windows需先安装java8 64位或以上的jdk。jadx-gui.bat中预设置java最大内存为4g,若电脑不支持或不需要这么大内存,可以自行修改-Xmx参数。

set DEFAULT_JVM_OPTS="-Xms128M" "-Xmx4g" "-Dawt.useSystemAAFontSettings=lcd" "-Dswing.aatext=true" "-XX:+UseG1GC"

尝试反编译jsse.jar,界面如下,可以看出其对关键字的高亮功能:

 


常用功能


CTRL+单击,即可跳转到类、方法、字段声明的地方。


 

右键->Find Usage,即可搜索到引用此方法的地方,选中即可跳转。

 


搜索,Navigation->Text Search。

 


移除某个包,移除后不会反编译该包下的文件,也不在处于搜索范围中,同时也可以减少内存占用。移除方法:选中某个包->右键->Exclude。



 移除后的效果如下:

 


反混淆


Jadx也可以用于apk的逆向工程,而apk文件通常都会经过代码混淆,反编译的结果可能会出现在各个包下都出现Test.java的文件,无法通过类名唯一识别一个类,还需要记住它所在包的包名,这样不利于我们的阅读。Jadx提供了反混淆的选项,可以帮我们将相同文件名起一个特殊的名字,这样它在项目中名字就是唯一的,方便识别和搜索。

 


导出Gradle工程


通过File->Save as gradle project可以导出一个Gradle编译的工程项目,这样我们就可以很方便地使用我们熟悉的代码编辑器引入工程并阅读查看代码了。


- EOF - 



以上就是这个开源项目的介绍。如果觉得这个项目不错,欢迎转发推荐给更多人。



分享、点赞和在看

支持我们分享更多优秀开源项目,谢谢!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存