参考:https://www.cnblogs.com/dragon2017/p/10375882.html
from :http://www.glorze.com/219.html
1、CFR-非常优秀并且支持java8
网址:http://www.benf.org/other/cfr/
这款201313年横空出世,至今都保持更新的反编译工具,因为其持续更新承接java的变化而且反编译效果非常良好,越来越来被人们更多的使用,根据cfr官网上的介绍,CFR支持反编译当今最新的Java特性–Java 8,例如lambda表达式以及java7中的switch支持String类型等,但是人家最要命也最装逼的是cfr完全是用Java 6编写的。。。
cfr没有图形化工具,需要在命令行中使用,首先的你的系统要配置java的环境,然后进入到cfr的jar包目录,运行类似如下的命令。
你一定觉得很不方便,对不对?一定在想是否存在便捷一点的工具,对不对?其实工具也就是一个脚本而已,也没有方便太多,这里放出一个脚本文件,至于用不用您自己参考。
2、Jadx-开源,快速并且支持安卓
网址:https://github.com/skylot/jadx
https://github.com/skylot/jadx
参考:https://blog.csdn.net/weixin_39142112/article/details/80356244
这又是一款相当强大的反编译神器了,现在已经在全球最大的同性交友社区GitHub上开源了,图形化的界面以及支持拖拽方式的操作可以大大满足你日常的需要了,如果你使用Gradle(老四没用过,老四用Maven),它也支持导出Gradle工程,而且它支持诸如apk、dex、jar、class、zip等多种文件格式。当前该项目依然在不断更新当中,相信也会越来越好。如果你喜欢折腾,那就可以去交友社区下载源码自己编译生成工具为自己所用,如果你不愿意可以去release栏下载官方最新的zip包,windows下直接运行jadx-gui.bat就可以了。
当然,由于项目比较新,当前不断更新的过程中你可能会遇到很多的问题,这个时候你需要经常关注源代码,查看软件运行日志以及官方FAQ来解决问题。
解压后:在lib文件夹中找到:
java -jar jadx-gui-1.2.0.jar
解析出来就是这样
3.Procyon-可以媲美cfr的有款Java反编译工具
与cfr一样,不像JD-GUI那样已经万年不更新了,Procyon同样支持Jdk1.8的类编译,譬如java8的很多新特性他都支持并且在一下几方面的反编译甚至已经超越了cfr,Procyon反编译后不仅输出java源码,还能输出原始字节码等。但是和cfr一样
方法传递
Lambda表达式
接口规范
匿名内部类
注解
枚举
switch(String)
下面来看看Procyon作者是怎么描述他的亲儿子的:
作为一名在.NET和Java平台之间分配时间的开发人员,我对Java生态系统中反编译器选择不足感到惊讶和沮丧。Jad(不再维护,封闭源代码)和JD-GUI(GPL3)都是相当不错的选择,但前者不支持Java 5+语言特性,后者倾向于禁用我的LINQ / DLR树编译器发出的代码。为了解决这个问题,我最近开始自己开发一个反编译器,受ILSpy和Mono.Cecil的启发(并且大量借鉴)。尽管仍然不完整,但我自己的测试似乎表明,Procyon反编译器通常可以对付其他领先的Java反编译器。但是,有一些已知的问题:用Eclipse编译的类(或其他任何东西javac)可能会产生不太理想的结果,特别是对于像基于String的switch语句这样的结构。到目前为止,我主要测试了使用Javac编译的类。随着时间的推移,我将努力改进对其他编译器的支持。不幸的是,我还没有像JD-GUI一样的GUI前端(但第三方前端存在 - 见下文!)。但是,我确实为支持ANSI / xterm-256的控制台提供颜色编码输出。我还提供三种输出模式:1.Java(默认)2.原始字节码(类似于javap,但更漂亮;运行-r)3.字节码AST(中间表示;运行-b,添加-u未优化)
Procyon的用法几乎同cfr一样,不在赘述。
4.其实还有fernflower、Jad等等反编译工具,但是因为Jad就如rocyon作者所言Jad已经不再维护了,fernflower在老四所写的另一篇文章《你可能不知道的两个逆天的Java反编译在线网站》的在线网址中提供了fernflower反编译的输出,您可以在那里体验,另外fernflower有两个不错的优点:
网址:http://www.glorze.com/217.html
大部分能反编译得到的java文件可以直接使用
能给你反编译的就会给你反编译,不能的不鸟你
5、jar包的反编译工具
官网:http://java-decompiler.github.io/
参考:https://blog.csdn.net/neverstopforcode/article/details/80913324
看自己用的系统选择下载:
我这里用的windows:
解压:
点击file——open file,选择想查看的jar。就能看到结果了,不过源码中注释的部分反编译后无法查看