“我该怎么做?”;“反编译”;Java类文件?
我可以使用什么程序来反编译类文件?我真的会得到Java代码,还是仅仅是JVM汇编代码“我该怎么做?”;“反编译”;Java类文件?,java,decompiler,Java,Decompiler,我可以使用什么程序来反编译类文件?我真的会得到Java代码,还是仅仅是JVM汇编代码 在这个网站上的Java性能问题上,我经常看到一些人的回答,他们“反编译”了Java类文件,以查看编译器如何优化某些东西。看一看。要查看Java源代码,请查看一些反编译程序。搜索jad 如果您想查看字节码,只需使用JDK附带的javap。有一些反编译器。。。快速搜索可得到: :开源(Apache 2)并积极开发 :开源(GPLv3)并积极开发 :开源(MIT)并积极开发 还有更多 它们生成Java代码。Ja
在这个网站上的Java性能问题上,我经常看到一些人的回答,他们“反编译”了Java类文件,以查看编译器如何优化某些东西。看一看。要查看Java源代码,请查看一些反编译程序。搜索jad
如果您想查看字节码,只需使用JDK附带的javap。有一些反编译器。。。快速搜索可得到:
它们生成Java代码。Java附带了一些东西,可以让您查看JVM字节码()。您可以使用一些程序。您将获得实际的Java代码,但有时代码会被混淆,因此方法由一个字母或数字或字母和数字的随机组合命名 我用的是
它有一个插件。这非常好。大多数Java反编译器都基于。这是一个很棒的工具,但不幸的是,它已经有一段时间没有更新了,并且不能很好地处理Java1.5+类。我还没有看到任何能够正确处理1.5+类的工具 2016年2月更新: 将JAD列为: 最流行的Java反编译器,但主要只适用于这个时代。用C++编写的,非常快。 过时、不受支持且无法正确反编译Java 5及更高版本 因此,您的里程数可能会因最近的jdk(7、8)而有所不同 同一站点列出了其他工具 正如在(2017年9月)中提到的,javadecompiler提供了一个SaaS,您可以在其中将
.class
文件上传到云中,并返回反编译的代码
原始答复:2008年10月
- JSR176的最终版本定义了J2SE5.0(JavaSE5)的主要特性,已于2004年9月30日发布
- 由Pavel Kouznetsov先生编写的著名Java反编译器JAD支持的最新Java版本是
- 现在可以从Internet下载的大多数Java反编译器,如“DJ Java反编译器”或“Cavaj Java反编译器”,都是由JAD提供支持的:它们无法显示Java 5源代码
- 显式支持反编译和分析Java5+“.class”文件
- 一个漂亮的GUI:
- JAD是一个有效且简单的工具
- 另外,如果您只想查看这些方法,请使用javap
-
- 有希望,但经常失败的方法反编译。我会一直盯着这个。还积极开发,支持最新的Java功能
-
- 采取了一种不同的方法,它尝试输出等效的Java代码,而不是尝试重建原始源代码,这有可能使模糊代码变得更好。从我的测试来看,它和Pryyon差不多,但有不同的东西还是不错的。我必须使用
命令行标志,这样它就不会在出现错误时停止。积极开发,有趣的是,它是用Python编写的-skip
- 采取了一种不同的方法,它尝试输出等效的Java代码,而不是尝试重建原始源代码,这有可能使模糊代码变得更好。从我的测试来看,它和Pryyon差不多,但有不同的东西还是不错的。我必须使用
-
- 成功了,但Procyon的输出要好得多。这是一个例子。JD-GUI也可以作为一个,这对我根本不起作用。它似乎不是开源的,开发似乎是零星的
-
- 工作正常,但仅支持Java1.4及以下版本。也可作为。不再在开发中
- 真的很好。您只需打开一个文件并浏览代码,就像
您正在使用IDE。好东西。目前列出的所有JAD链接似乎都已断开,所以我找到了这个网站。非常有效(至少对于Linux是如此)!在Ubuntu11.10上,无论出于何种原因,我不得不下载静态版本
如果您想了解Java编译器如何做某些事情,您不需要反编译,而是需要反汇编。反编译涉及将字节码转换为Java源代码,这意味着大量低级信息丢失,如果您想了解编译器优化,这可能正是您感兴趣的信息 不管怎样,我碰巧写了一封信。与Javap不同,它甚至可以在高度病态的类上工作,因此您可以看到模糊处理工具对您的类做了什么。它也可以进行反编译,不过我不推荐它。包括一个反编译器。这是自由和开放源码软件。JAD不适合我(Ubuntu11.10版),所以我继续前进,继续前进。至少它有开放的Java源代码,并且能够正确地反编译我的.class 我建议首先查看“分支/通用”分支。树干不稳 我试了几次,似乎效果最好。它正在积极开发中,支持Java最新版本的许多功能 以下是我尝试过的其他方法: