Java 如何反编译.class文件?

Java 如何反编译.class文件?,java,compilation,Java,Compilation,可能重复: 我是java新手,我想知道是否有办法从编译文件(.class文件)中检索文件(即.java文件)的源代码 我读过关于编译过程的书,比如解析、语法和语义树、中间代码生成、使用的宏等等。这听起来像是一个非常复杂的过程。逆向工程将更加困难。因此,我认为这是不可能的,但我不得不问。我在谷歌上搜索了一下,但没有找到任何令人满意的东西 我还在课堂上学习了代码混淆。如果反编译是可能的,那么对于一个模糊的文件,它将如何表现 提前感谢。[编辑:我不会完成回答,因为这个问题是重复的,这只是对问题第二部

可能重复:

我是java新手,我想知道是否有办法从编译文件(
.class
文件)中检索文件(即
.java
文件)的源代码

我读过关于编译过程的书,比如解析、语法和语义树、中间代码生成、使用的宏等等。这听起来像是一个非常复杂的过程。逆向工程将更加困难。因此,我认为这是不可能的,但我不得不问。我在谷歌上搜索了一下,但没有找到任何令人满意的东西

我还在课堂上学习了代码混淆。如果反编译是可能的,那么对于一个模糊的文件,它将如何表现

提前感谢。

[编辑:我不会完成回答,因为这个问题是重复的,这只是对问题第二部分的补充评论]

当您混淆一个类时,您将删除执行过程中不需要但存在于文件中的所有内容,例如方法的名称

事实上,混淆一个孤立的类并不能消除很多问题,因为其他类需要方法或可见字段的名称。因此,通常使用proguard之类的工具将一组类混淆在一起。

[编辑:我不会完成回答,因为这个问题是重复的,这只是对问题第二部分的附加注释]

当您混淆一个类时,您将删除执行过程中不需要但存在于文件中的所有内容,例如方法的名称


事实上,混淆一个孤立的类并不能消除很多问题,因为其他类需要方法或可见字段的名称。因此,通常你会使用proguard之类的工具将一组类混淆在一起。

是的,顺便说一下,有一个非常简单的程序,名为
DJ Java Decompiler
(在谷歌搜索很容易找到),安装后,你只需打开.class文件,它会显示所有格式化和缩进的代码。
Microsoft Windows only应用程序

是的,顺便说一下,有一个非常简单的程序,名为
DJ Java Decompiler
(在google中搜索很容易找到),安装后,只需打开.class文件,它会显示所有格式化和缩进的代码。
Microsoft Windows only应用程序

您必须注意,此特定程序仅在Windows上工作,您必须对其进行适当配置以打开/反编译类。如果你想将它与IDE集成,还需要采取更多的步骤,具体取决于IDE。是的,我知道,但他说:“……我想知道是否有办法检索文件的源代码。”如果他想反编译文件,这是一个很棒的程序。你必须注意,这个特殊的程序只在windows上工作,你必须对它进行适当的配置以打开/反编译类。如果你想将它与IDE集成,还需要采取更多的步骤,具体取决于IDE。是的,我知道,但他说:“……我想知道是否有办法检索文件的源代码。”如果他想反编译文件,这是一个很棒的程序。