我可以使用什么程序来反编译类文件?我真的会得到Java代码,还是仅仅是JVM汇编代码?
关于这个网站上的Java性能问题,我经常看到一些人的回答,他们“反编译”了Java类文件,以了解编译器如何优化某些东西。
看看cavaj。
查看Java源代码,检查一些反编译器。去搜索联合应用开发。
如果您想查看字节码,只需使用JDK附带的javap即可。
这里有一些反编译器…快速搜索会得到:
还有更多。
它们生成Java代码。Java自带一些功能,可以让您看到JVM字节代码(javap)。
你可以使用一些程序。您将得到实际的Java代码,但有时代码会被混淆,因此方法由一个字母或数字或字母和数字的随机组合命名。
DJ反编译器 # EYZ0 < / p >
我使用JAD解码器。
有一个Eclipse插件,jadeclipse。它很漂亮。
大多数Java反编译器都基于联合应用开发。这是一个很棒的工具,但不幸的是,它已经有一段时间没有更新了,并且不能很好地处理Java 1.5+类。我还没有看到任何能够正确处理1.5+类的工具。
2016年2月更新:
www.javadecompilers.com列出JAD为:
最流行的Java反编译器,但主要仅限于这个时代。用c++写的,非常快 过时,不受支持,不能正确反编译Java 5及更高版本
因此,您的里程可能随最近的jdk(7,8)而变化。
该网站还列出了其他工具。
而javadecompiler,正如萨尔瓦多·瓦伦西亚在的评论(2017年9月)中提到的,提供了一个SaaS,你可以将.class文件上传到云端,然后它会返回反编译的代码。
.class
原答案:2008年10月
Java编译器的(另一个快速Java反编译器)有:
它适用于从JDK 1.1.8到JDK 1.7.0的编译器,以及其他编译器(Jikes, JRockit等)。
它的特点是一个在线的现场演示版本,实际上是完全功能!您只需在页面上放置一个jar文件,就可以看到反编译的源代码,而不需要安装任何东西。
< >强烟尘< / >强是较新的Java代码的一个选项。至少它的优点是最近还在维护……
此外,<强> Java编译器的< / >强是一个具有独立GUI和Eclipse集成的反编译器。
最后,< >强Jdec < / >强还没有被提到,尽管它没有其他选项那么完善。
JAD是一种有效且简单的方法。
另外,如果您只想查看方法,请使用javap。
JD-GUI真的很好。您只需打开JAR文件并浏览代码 你正在开发一个IDE。好东西。< / p >
到目前为止列出的JAD链接似乎都是坏的,所以我找到了这个网站。工作得很好(至少对于Linux)!在Ubuntu 11.10上,不知什么原因,我不得不下载静态版本。
http://www.varaneckas.com/jad < a href = " http://www.varaneckas.com/jad " > < / >
如果你想知道Java编译器是如何做某些事情的,你不想要反编译,你想要的是反汇编。反编译涉及到将字节码转换为Java源代码,这意味着会丢失大量低级信息,如果您想了解编译器优化,那么这可能正是您感兴趣的信息。
不管怎样,我碰巧写了一个开源Java反汇编程序。与Javap不同的是,这甚至适用于高度病态的类,因此您可以看到混淆工具对您的类做了什么。它还可以进行反编译,尽管我不推荐这样做。
Procyon包含一个反编译器。它是自由/开源软件。
JAD不适合我(Ubuntu 11.10问题),所以我已经向前移动,并浸泡在净土宗。至少它有开放的Java源代码,并能够正确地反编译我的. class。
我建议先检查分支/通用的分支。树干不稳。
我尝试了几种,南河三似乎最适合我。它正在积极开发中,支持最新版本Java的许多特性。
以下是我尝试过的其他方法:
-skip
以下是截至2015年2月的反编译器列表:
南河三,开源,https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
病死率,免费,没有源代码可用,http://www.benf.org/other/cfr/
JD,仅供非商业使用,http://jd.benow.ca/
Fernflower,开源,https://github.com/fesh0r/fernflower,
联合应用开发 -此处仅为历史原因。免费,无源代码可用,http://varaneckas.com/jad/ 过时,不受支持,不能正确反编译Java 5及以上版本
您可以在线测试上述反编译器,不需要安装,并做出自己的选择。
# EYZ0 # EYZ1
对于OSX,我建议使用jarzilla或JD-GUI
它们都允许你查看罐子、战争等。文件内容并反编译其中的任何类文件。
使用AndroChef Java反编译器可以反编译apk, dex, jar和java类文件。这很简单。AndroChef JD基于FernFlower。你可以在10次免费使用中评估它。
AndroChef支持Java语言特性,如泛型、枚举和注释。根据一些研究,AndroChef Java Decompiler能够反编译98.04%的由传统Java编译器生成的Java应用程序——一个非常高的回收率。它是一个简单但功能强大的工具,允许您将Java和Dalvik字节码(DEX, APK)反编译为可读的Java源代码。
在IntelliJ IDEA平台上,您可以使用Java反编译器IntelliJ插件。它允许您在调试过程中显示所有Java源代码,即使您没有全部Java源代码。它基于著名的工具JD-GUI。