我应该使用什么程序来反编译一个class文件?我会得到Java代码,还是只有JVM汇编代码?
在这个网站上关于Java性能问题的回答中,我经常看到人们从"class"文件中"反编译"出来以查看编译器如何优化某些内容。
我应该使用什么程序来反编译一个class文件?我会得到Java代码,还是只有JVM汇编代码?
在这个网站上关于Java性能问题的回答中,我经常看到人们从"class"文件中"反编译"出来以查看编译器如何优化某些内容。
2016年2月更新:
www.javadecompilers.com 列出JAD为:
最受欢迎的Java反编译器,但主要适用于旧版本。由C++编写,速度非常快。
已过时,不受支持,并且无法正确反编译Java 5及更高版本。
因此,对于最新的jdk(7、8),结果可能因版本而异。
同一网站列出了其他工具。
如Salvador Valencia在评论中指出的那样(2017年9月),javadecompiler提供一种SaaS,您可以将 .class
文件上传到云中,它会返回反编译代码。
原始回答:2008年10月
Java Decompiler(另一个快速的Java反编译器)具有:
它可以与JDK 1.1.8到JDK 1.7.0及其他编译器(例如Jikes、JRockit等)一起使用。
它还提供了一个在线实时演示版本,完全实用!你只需将jar文件拖放到页面上,即可查看反编译的源代码,无需安装任何软件。
我尝试了几个,Procyon 对我来说似乎效果最好。它正在积极开发中,并支持最新版本的Java的许多功能。
以下是我尝试过的其他工具:
-skip
命令行标志,以便它不会在错误上停止。积极开发,并且有趣的是它是用Python编写的。IGNORE_EXCEPTIONS
已更改为命令行标志 -skip
。 - Antimony有几个程序可以使用。您将得到实际的Java代码,但有时代码会被混淆,因此方法名称由一个字母或数字或字母和数字的随机组合命名。