我可以使用什么程序反编译类文件?我实际上会得到Java代码,还是仅仅是JVM汇编代码?
关于该站点上的Java性能问题,我经常看到“反编译” Java类文件以了解编译器如何优化某些东西的人们的回答。
我可以使用什么程序反编译类文件?我实际上会得到Java代码,还是仅仅是JVM汇编代码?
关于该站点上的Java性能问题,我经常看到“反编译” Java类文件以了解编译器如何优化某些东西的人们的回答。
Answers:
2016年2月更新:
www.javadecompilers.com将JAD列出为:
最受欢迎的Java反编译器,但仅在这个时代才出现。用C ++编写,非常快。
过时,不受支持且无法正确反编译Java 5及更高版本
因此,您的里程可能会随着最近的jdk(7,8)而变化。
同一站点列出了其他工具。
如萨尔瓦多·瓦伦西亚(Salvador Valencia)在评论中(2017年9月)所述,javadecompiler 提供了SaaS,您可以在其中将.class
文件上传到云中并返回经过反编译的代码。
原始答案:2008年10月
Java Decompiler(还有另一个Fast Java decompiler)具有:
它可以与从JDK 1.1.8到JDK 1.7.0以及其他(Jikes,JRockit等)的编译器一起使用。
它具有一个在线实时演示版本,实际上功能齐全!您只需将jar文件放在页面上,即可查看反编译的源代码,而无需安装任何内容。
我尝试了几次,Procyon似乎对我来说是最好的。它正在积极开发中,并支持Java最新版本的许多功能。
这些是我尝试过的其他产品:
-skip
命令行标志,以便它不会因错误而停止。积极开发,有趣的是它是用Python编写的。IGNORE_EXCEPTIONS
现在事物已更改为命令行标志-skip
。
我使用JAD Decompiler。
有一个Eclipse插件jadeclipse。很好
煤烟是更新的Java代码的一种选择。至少它的优点是最近仍在维护...
另外,Java Decompiler是具有独立GUI和Eclipse集成的反编译器。
以下是截至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/
大多数Java反编译器都是基于JAD的。它是一个很棒的工具,但是不幸的是,有一段时间没有更新,并且不能很好地处理Java 1.5+类。我还没有看到任何可以正确处理1.5+类的工具。
到目前为止列出的所有JAD链接似乎都已损坏,因此我找到了此站点。效果很好(至少适用于Linux)!在Ubuntu 11.10上,无论出于何种原因,我都必须下载静态版本。
如果要查看Java编译器如何执行某些操作,则不需要反编译,而需要反汇编。反编译涉及将字节码转换为Java源代码,这意味着丢失了许多低级信息,并且如果您想了解编译器优化,那么这可能就是您感兴趣的信息。
无论如何,我碰巧写了一个开源Java反汇编程序。与Javap不同,它甚至可以在高度病态的类上使用,因此您也可以查看混淆工具对类的作用。它也可以反编译,尽管我不建议这样做。
JAD对我不起作用(Ubuntu 11.10问题),因此我向前迈进并开始使用JODO。至少它具有Open Java源代码,并且能够正确地反编译我的.class。
我建议先检查“分支/常规”分支。中继线不稳定。
在IntelliJ IDEA平台上,您可以使用Java Decompiler IntelliJ插件。它允许您在调试过程中显示所有Java源代码,即使您没有全部源代码也是如此。它基于著名的工具JD-GUI。
使用AndroChef Java反编译器,您可以反编译apk,dex,jar和Java类文件。这很简单。AndroChef JD基于FernFlower。您可以免费使用10次来评估它。
AndroChef支持Java语言功能,例如泛型,枚举和注释。根据一些研究,AndroChef Java Decompiler能够反编译使用传统Java编译器生成的Java应用程序的98.04%,这具有很高的恢复率。它是一个简单但功能强大的工具,可让您将Java和Dalvik字节码(DEX,APK)反编译为可读的Java源代码。
对于OSX,我建议:jarzilla或JD-GUI
它们都允许您查看jar,war等。文件内容并反编译其中的任何类文件。
Jarzilla:https://code.google.com/p/jarzilla/
JD-GUI:http://jd.benow.ca/