如果从java源编译的所有字节码都可以反编译为java源?

Fre*_*ind 8 java bytecode decompiler

我看到一些java反编译器可以将字节码反编译成可读的java源代码,我想知道来自java(不是其他JVM语言)的所有字节码是否可以再次反编译为java源代码?


更新

对不起,让我更清楚地提出问题.

刚谈谈JVM上的普通Java代码(没有Android,没有字节码增强,没有AOP,没有混淆),我实际上希望字节码可以被反编译.但是我不知道是否有编译成字节码的java代码形式,永远不能被反编译成可读的java源代码.

Ste*_*n C 7

我想知道来自java(不是其他JVM语言)的所有字节码是否可以再次反编译为java源代码?

答案是不.

不保证反编译器适用于所有Java字节码:

  • 典型的混淆器将故意重新排列字节码,使得常见的反编译器不会产生可读的源代码......并且可能不会产生有效的源代码.

  • 许多反编译器在处理较新的Java结构时存在问题.

  • 许多反编译器都存在从"复杂"源代码编译的字节码问题.

  • 即使它们生成可编译的代码,也无法保证代码是正确的.

最重要的是,反编译器只能与其作者的智慧和勤奋能力一样好.我从来没有听说过一个完美的.