我可以使用什么程序来反编译类文件?我真的会得到Java代码,还是仅仅是JVM汇编代码?

关于这个网站上的Java性能问题,我经常看到一些人的回答,他们“反编译”了Java类文件,以了解编译器如何优化某些东西。


当前回答

使用AndroChef Java反编译器,您可以反编译apk, dex, jar和Java类文件。这很简单。AndroChef JD基于FernFlower。你可以在10次免费使用中评估它。

AndroChef支持Java语言特性,如泛型、枚举和注释。根据一些研究,AndroChef Java Decompiler能够反编译98.04%的由传统Java编译器生成的Java应用程序——一个非常高的回收率。它是一个简单但功能强大的工具,允许您将Java和Dalvik字节码(DEX, APK)反编译为可读的Java源代码。

其他回答

查看Java源代码,检查一些反编译器。去找贾德。

如果您想查看字节码,只需使用JDK附带的javap即可。

以下是截至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/

Soot是较新的Java代码的一个选项。至少它的优点是最近还在维护……

此外,Java反编译器是一个具有独立GUI和Eclipse集成的反编译器。

最后,还没有提到Jdec,尽管它没有其他选项那么完善。

我使用JAD反编译器。

它有一个Eclipse插件jadeclipse。它很漂亮。

大多数Java反编译器都是基于JAD的。这是一个很棒的工具,但不幸的是,它已经有一段时间没有更新了,并且不能很好地处理Java 1.5+类。我还没有看到任何能够正确处理1.5+类的工具。