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

更新

抱歉,让我更清楚地说明这个问题。

只是说说JVM上的普通Java代码(没有Android,没有增强的字节码,没有AOP,没有混淆),我实际上希望可以对字节码进行反编译。但是我不知道是否有形式的Java代码被编译为字节码,将永远无法反编译为可读的Java源代码。

最佳答案



答案是不。

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

  • 一个好的混淆器将故意重新排列字节码,以使普通的反编译器不会产生可读的源代码……也可能不会产生有效的源代码。
  • 许多反编译器在处理较新的Java结构时遇到问题。
  • 许多反编译器对于从“复杂”源代码编译的字节码都有问题。
  • 即使它们生成可编译的代码,也不能保证该代码是正确的。

  • 最重要的是,反编译器的性能和作者所能做到的一样聪明。我从来没有听说过一个完美的。

    10-01 02:39
    查看更多