题
什么程序可以用于进行一类的文件?我会实际上得到Java代码,或只是JVM会的代码?
在绩效问题,在这个网站上我经常看到的答复的人有"反编译"Java类文件看到编译器如何优化了某些事情。
解决方案
更新月2016年:
www.javadecompilers.com 列出JAD为:
最受欢迎的Java反编译器,但主要是这一年龄只。C++编写的,所以非常快。
已经过时,不支持并不反编译的正确的Java5和后
所以你的里程可能变化与最近的java(7,8条)。
相同的网站列表中其他工具。
和javadecompiler,如通过 萨尔瓦多瓦伦西亚 在 评论意见 (九月2017年),提供了一个萨斯,你上传的 .class
文件的云和返回你的反编译代码。
原来的回答:Oct.2008年
- 最后释放的JSR176,限定的主要特点J2SE5.0(Java SE5),已经发布在30日,2004年。
- 最新的Java version支持JAD,着名的Java反编译器写的先生帕维尔*Kouznetsov, JAVA1.3.
- 最Java防止反编译可下载今天从互联网,例如"DJ Java反编译器"或"Cavaj Java反编译器",是由JAD:他们不能显示Java5源。
Java反编译器 (又一个快速Java反编译器)有:
- 明确支持反编译和分析 Java5+ ".类"的文件。
- 一个很好的GUI:
它的工作与编译器从JAVA1.1.8达JAVA1.7.0,和其他人(Jikes, JRockit, 等等)。
它设有一个网上 现场演示版本 这实际上是功能齐全的!你可以放下一个罐子文件的页面上看到的反编译源代码没有安装任何东西。
其他提示
要查看Java源代码,请检查一些反编译器。去搜索 jad 。
如果您想查看字节码,只需使用JDK附带的 javap 。
我试了, 南河 似乎最好的工作对我来说。这是在积极发展,并支持许多特征的最新版本。
这些都是其他人我想:
- CFR
- 有希望的,但往往失败的方法反编译。我会让我的眼睛在这一个。也积极支持下,发展的最新Java的功能。
- 喀拉喀托
- 需要一种不同的方法在于它试图输出当量代码,而不是试图重建原来源,这有可能使它更模糊的代码。从我的测试,它是大致上与南河,但是仍然很高兴有不同的东西。我没有用的
-skip
命令行的标志,所以它不会停止的错误。积极的发展,并且有趣的是它被写在蟒蛇。
- 需要一种不同的方法在于它试图输出当量代码,而不是试图重建原来源,这有可能使它更模糊的代码。从我的测试,它是大致上与南河,但是仍然很高兴有不同的东西。我没有用的
- JD-GUI
- 的工作,但南河的输出是好得多。这里有一个 页面比较南河输出的原始和JD-GUI.JD-GUI也可作为一个 日食插件, 这样做了,并没有为我工作。似乎不是开放源和开发似乎是零星的。
- JAD
- 的工作,但只有支持Java1.4和下文。也可作为一个 日食插件.不再在开发中。
我使用 JAD反编译器。
有一个 Eclipse 插件, jadeclipse 。非常好。
Procyon 包含反编译器。这是FOSS。
Soot 是较新Java代码的选项。至少它具有最近仍然保持的优势......
另外, Java Decompiler 是一个反编译器单独的GUI和Eclipse集成。
最后, Jdec 尚未被提及,尽管它没有那么精致作为其他选择。
以下是截至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+课程的工具。
查看 cavaj 。
到目前为止列出的所有JAD链接似乎都被打破了,所以我找到了这个网站。效果很好(至少对Linux来说)!在Ubuntu 11.10上,无论出于何种原因,我都必须下载静态的。
JAD是一个工程和简单。
还有,如果你只是想要看到的方法、使用javap.
如果你想看看Java编译器如何做某些事情,你不想反编译,你想要反汇编。反编译涉及将字节码转换为Java源代码,这意味着丢失了大量低级信息,如果您对编译器优化感到疑惑,这可能是您感兴趣的信息。
无论如何,我碰巧编写了一个开源Java反汇编程序。与Javap不同,它甚至可以在高度病态的类中工作,因此您可以看到混淆工具对您的类进行了哪些操作。它也可以做反编译,但我不推荐它。
JAD对我不起作用(Ubuntu 11.10问题)所以我已经向前迈进了一步,并且在 JODO 。至少它有Open Java源代码,并且能够正确地反编译我的 .class 。
我建议先查看'branches / generic'分支。树干不稳定。
在IntelliJ IDEA平台上,您可以使用 Java Decompiler IntelliJ插件。它允许您在调试过程中显示所有Java源代码,即使您没有全部这些源代码也是如此。它基于着名的工具 JD-GUI 。
使用 AndroChef Java Decompiler ,您可以反编译apk,dex,jar和java类文件。它简单易行。 AndroChef JD基于 FernFlower 。您可以在10个免费使用中对其进行评估。
AndroChef支持Java语言功能,如泛型,枚举和注释。根据一些研究,AndroChef Java Decompiler能够反编译使用传统Java编译器生成的98.04%的Java应用程序 - 非常高的恢复率。它是一个简单但功能强大的工具,允许您将Java和Dalvik字节码(DEX,APK)反编译成可读的Java源代码。
对于OSX,我建议:jarzilla或JD-GUI
它们都允许你查看jar,war等。文件内容并反编译其中的任何类文件。
Jarzilla: https://code.google.com/p/jarzilla/ 点击 JD-GUI: http://jd.benow.ca/