我可以使用什么程序来反编译类文件?我真的会得到Java代码,还是只是JVM汇编代码?如何“反编译”Java类文件?
关于本站点上的Java性能问题,我经常看到有人对Java类文件进行了“反编译”,以了解编译器如何优化特定的东西。
我可以使用什么程序来反编译类文件?我真的会得到Java代码,还是只是JVM汇编代码?如何“反编译”Java类文件?
关于本站点上的Java性能问题,我经常看到有人对Java类文件进行了“反编译”,以了解编译器如何优化特定的东西。
更新2016年2月:
www.javadecompilers.com名单JAD的存在:
最流行的Java反编译器,但主要只是这个时代的。用C++编写,非常快速。
过时,不支持,不正确编译Java 5的,后来
所以你的里程可能与近期的JDK变化(7,8)。
相同的网站列表其他工具。
而且javadecompiler,由Salvador Valencia在the comments(9月2017)指出,提供在那里你将.class
文件上传到云中的SaaS和返回你反编译的代码。
原来的答复:2008年10月
Java Decompiler(另一种快速的Java反编译器)有:
它的工作原理与JDK 1.1.8编译器高达JDK 1.7.0,和其他人(Jikes,JRockit等)。
它具有实际功能完全正常的在线live demo version!您只需在页面上放置一个jar文件,然后查看反编译的源代码,而无需安装任何内容。
+1值得一提的是它也是模块化的,所以核心(用C++ )可以在其他地方使用。 – 2010-05-05 04:02:28
jd-gui-0.3.3也可以[这里](http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=) – amaidment 2012-07-03 07:55:16
要查看Java源代码,请查看一些反编译器。去搜索jad。
如果要查看字节码,只需使用javap随JDK提供。
我会推荐其中一个开源反编译器,因为它们是积极开发的。使用[Procyon](https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler),[CFR反编译器](http://www.benf.org/other/cfr/)或[Krakatau]( https://开头github上。com/Storyyeller/Krakatau)(Python)。 – 2013-08-22 11:26:40
有几个程序可以使用。您将获得实际的Java代码,但有时代码会被混淆,因此方法以一个字母或数字或随机组合的字母和数字命名。
有一个Eclipse插件,jadeclipse。这很不错。
Soot是较新Java代码的选项。至少它的优势仍然是最近维护...
另外,Java Decompiler是一个反编译器,同时具有独立的GUI和Eclipse集成。
最后,Jdec还没有被提及,虽然它没有像其他选项一样精致。
JAD是一个工作,很简单。
另外,如果你只是想看到的方法,使用javap。
到目前为止所列出的所有JAD链接似乎都被破坏了,所以我找到了这个网站。很好用(至少对于Linux来说)!在Ubuntu 11.10上,我不得不下载任何原因的静态文件。
如果你想看到Java编译器如何做某些事情,你不想反编译,想要拆卸。反编译涉及到将字节码转换为Java源代码,这意味着很多低级信息都会丢失,如果您想知道编译器优化的问题,这可能是您感兴趣的信息。
无论如何,我会发生写了一个open source Java disassembler。与Javap不同的是,即使在高度病态的类上也是如此,所以你可以看到什么模糊处理工具正在为你的类做些什么。它也可以反编译,尽管我不推荐它。
Procyon包括反编译器。这是FOSS。
JAD不适用于我(Ubuntu 11.10版本),所以我已经向前移动并在JODO上擦拭。至少它有Open Java源代码,并且能够正确地反编译我的.class。
我推荐先查看'branches/generic'分支。树干不稳定。
我试了几次,而Procyon似乎对我最好。它正处于积极的发展阶段,并且支持最新版本的Java的许多功能。
这是我试过的人:
-skip
命令行标志,因此它不会因错误而停止。积极开发,有趣的是它是用Python编写的。这里是为2015年2月的反编译器的列表:
南河,开源,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/
对于OSX,我建议:jarzilla或JD-GUI
它们都允许您查看罐子,战争等。文件内容并反编译其中的任何类文件。
Jarzilla:https://code.google.com/p/jarzilla/
JD-GUI:http://jd.benow.ca/
随着AndroChef Java Decompiler可以APK反编译,DEX,罐子和Java类文件。这很简单,容易。 AndroChef JD基于FernFlower。你可以评估它在10个免费的用途。
AndroChef支持Java语言功能,如泛型,枚举和注释。根据一些研究,AndroChef Java Decompiler能够反编译传统Java编译器生成的Java应用程序的98.04% - 具有非常高的恢复率。这是一个简单但功能强大的工具,它允许您将Java和Dalvik字节码(DEX,APK)反编译为可读的Java源代码。
在IntelliJ IDEA平台上,您可以使用Java Decompiler IntelliJ Plugin。它允许你在调试过程中显示所有的Java源代码,即使你没有全部。它基于着名的工具JD-GUI。
“反编译”的艺术也可以被认为是逆向工程。尽管有时在逆向工程时,您并不总是可以访问二进制文件。 – Makach 2009-06-13 10:53:08
没有人提到https://bytecodeviewer.com/,它可以反编译为java源代码和字节码(对于java源代码是基于JAD的)。 – 2018-01-08 16:32:44