我可以使用什么程序来反编译类文件? 我实际上会得到Java代码,还是仅仅是JVM汇编代码?
关于该站点上的Java性能问题,我经常看到已经“反编译” Java类文件以查看编译器如何优化某些东西的人们的回答。
#1楼
到目前为止,列出的所有JAD链接似乎都已损坏,因此我找到了此站点。 效果很好(至少适用于Linux)! 在Ubuntu 11.10上,无论出于何种原因,我都必须下载静态版本。
#2楼
如果要查看Java编译器如何执行某些操作,则不需要反编译,而需要反汇编。 反编译涉及将字节码转换为Java源代码,这意味着丢失了许多低级信息,并且如果您想知道编译器优化,那么这可能就是您感兴趣的信息。
无论如何,我碰巧写了一个开源Java反汇编程序 。 与Javap不同,这甚至可以在高度病理的类上使用,因此您也可以查看混淆工具对类的作用。 它也可以反编译,尽管我不建议这样做。
#3楼
煤烟是更新的Java代码的一种选择。 至少它的优点是最近仍在维护...
而且, Java Decompiler是具有独立GUI和Eclipse集成的反编译器。
最后,虽然没有像其他选项那样精巧 ,但是没有提及Jdec 。
#4楼
Procyon包括反编译器。 是FOSS。
#5楼
JAD对我不起作用(Ubuntu 11.10问题),所以我向前迈进了一步,开始使用JODO 。 至少它具有Open Java源代码,并且能够正确地反编译我的.class 。
我建议先检查“分支/常规”分支。 中继线不稳定。
#6楼
我尝试了几次, Procyon似乎对我来说是最好的。 它正在积极开发中,并支持Java最新版本的许多功能。
这些是我尝试过的其他产品:
- 病死率
- 有希望的方法反编译通常是失败的。 我会一直关注这个。 还积极开发并支持最新的Java功能。
- 喀拉喀托
- 采用不同的方法,因为它尝试输出等效的Java代码,而不是尝试重建原始源,这有可能使其更适合混淆代码。 根据我的测试,它与Procyon大致相当,但还是有一些不同之处。 我确实必须使用
-skip
命令行标志,以便它不会因错误而停止。 积极开发,有趣的是它是用Python编写的。
- 采用不同的方法,因为它尝试输出等效的Java代码,而不是尝试重建原始源,这有可能使其更适合混淆代码。 根据我的测试,它与Procyon大致相当,但还是有一些不同之处。 我确实必须使用
- 图形界面
- 可行,但是Procyon的输出要好得多。 这是比较Procyon输出与原始JD-GUI的页面 。 JD-GUI也可以作为Eclipse插件使用 ,这对我根本不起作用。 似乎不是开源的,开发似乎是零星的。
- 贾德
- 有效,但仅支持Java 1.4及更低版本。 也可以作为Eclipse插件使用 。 不再开发中。
#7楼
看一看cavaj 。
#8楼
要查看Java源代码,请检查一些反编译器。 去寻找贾德 。
如果要查看字节码,只需使用JDK随附的javap 。
#9楼
有一些反编译器...快速搜索结果:
还有很多。
这些产生Java代码。 Java附带了一些让您看到JVM字节码( javap )的东西。
#10楼
您可以使用一些程序。 您将获得实际的Java代码,但是有时代码会被混淆,因此方法以一个字母或数字或字母和数字的随机混合命名。
#11楼
我使用JAD Decompiler 。
有一个Eclipse插件jadeclipse 。 很好
#12楼
大多数Java反编译器都是基于JAD的 。 这是一个很棒的工具,但是不幸的是,有一段时间没有更新,并且不能很好地处理Java 1.5+类。 我还没有看到任何可以正确处理1.5+类的工具。
#13楼
2016年2月更新:
www.javadecompilers.com将JAD列出为:
最受欢迎的Java反编译器,但仅限于这个时代。 用C ++编写,非常快。
过时,不受支持且无法正确反编译Java 5及更高版本
因此,您的里程可能会因最近的jdk而异(7,8)。
同一站点列出了其他工具。
如萨尔瓦多·瓦伦西亚 ( Salvador Valencia)在评论中 (2017年9月)所述,javadecompiler提供了一个SaaS,您可以在其中将.class
文件上传到云中并返回经过反编译的代码。
原始答案:2008年10月
- 定义J2SE 5.0(Java SE 5)的主要功能的JSR 176的最终版本已于2004年9月30日发布。
- 由Pavel Kouznetsov先生编写的著名Java反编译器JAD支持的最新Java版本是JDK 1.3 。
- 目前,可从Internet下载的大多数Java反编译器(例如“ DJ Java Decompiler”或“ Cavaj Java Decompiler”)均由JAD提供支持:它们无法显示Java 5源。
Java Decompiler (还有另一个Fast Java decompiler)具有:
- 明确支持反编译和分析Java 5+ “ .class”文件。
- 一个不错的GUI:
它可以与从JDK 1.1.8到JDK 1.7.0以及其他版本( Jikes , JRockit等)的编译器一起使用。
它具有一个在线实时演示版本 ,实际上功能齐全! 您只需将jar文件放在页面上,即可查看反编译的源代码,而无需安装任何内容。
#14楼
以下是截至2015年2月的反编译器列表:
Procyon ,开源, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR ,免费,没有源代码, http://www.benf.org/other/cfr/
JD ,仅供非商业用途免费使用, http://jd.benow.ca/
Fernflower ,开源, https://github.com/fesh0r/fernflower ,
JAD –仅出于历史原因在此给出。 免费,没有可用的源代码, http: //varaneckas.com/jad/已过时,不受支持,并且不能正确地反编译Java 5和更高版本。
您可以在线测试上述反编译器,无需安装,然后自行选择进行培训。
云中的Java反编译器: http : //www.javadecompilers.com/
#15楼
对于OSX,我建议:jarzilla或JD-GUI
它们都允许您查看jar,war等。 文件内容并反编译其中的任何类文件。
Jarzilla: https : //code.google.com/p/jarzilla/
JD-GUI: http : //jd.benow.ca/
#16楼
使用AndroChef Java反编译器,您可以反编译apk,dex,jar和Java类文件。 这很简单。 AndroChef JD基于FernFlower 。 您可以免费使用10次来评估它。
AndroChef支持Java语言功能,例如泛型,枚举和注释。 根据一些研究,AndroChef Java Decompiler能够反编译使用传统Java编译器生成的Java应用程序的98.04%,这具有很高的恢复率。 它是一个简单但功能强大的工具,可让您将Java和Dalvik字节码(DEX,APK)反编译为可读的Java源代码。
#17楼
在IntelliJ IDEA平台上,您可以使用Java Decompiler IntelliJ插件 。 它允许您在调试过程中显示所有Java源代码,即使您没有全部源代码也是如此。 它基于著名的工具JD-GUI 。
#18楼
JAD是一种有效且简单的工具。
另外,如果您只想查看方法,请使用javap。
#19楼
来源:CSDN
作者:p15097962069
链接:https://blog.csdn.net/p15097962069/article/details/103908642