java - 如果所有从java源码编译出来的字节码都可以反编译成java源码呢?

标签 java bytecode decompiler

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


更新

对不起,让我把问题说清楚。

就说JVM上正常的Java代码(没有Android,没有字节码增强,没有AOP,没有混淆),其实我希望字节码可以被反编译。但我不知道是否有编译成字节码的 java 代码形式,将永远无法反编译为可读的 java 源代码。

最佳答案

I wonder if all the bytecode which comes from java (not other JVM language) can be decompiled to java sources again?

答案是否定的

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

  • 一个好的混淆器会故意重新排列字节码,这样普通的反编译器就不会产生可读的源代码……而且可能不会产生有效的 源代码。

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

  • 许多反编译器在处理从“复杂”源代码编译的字节码时遇到问题。

  • 即使他们生成可编译代码,也不能保证代码是正确的。

底线是,反编译器的好坏取决于其作者的智慧和勤奋。我从未听说过完美的。

关于java - 如果所有从java源码编译出来的字节码都可以反编译成java源码呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736563/

相关文章:

java - BouncyCaSTLe Java API 和 OpenSSL 生成的 ECDH key 不同

java - 如何防止 log4j 日志被重定向到根记录器

java - 为什么 null 不是编译时常量?

java - Java 泛型类型与旧式泛型的性能差异?

java - 位掩码和移位(+java 字节码)

java - 以编程方式反编译 .class 文件

java - 反编译 java 类文件的最佳软件是什么?

java - 将行号添加到已编译的类

java - 什么决定了从 lambda 创建哪个功能接口(interface)?

java - libjpeg turbo android jpeg 压缩