我看到一些 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/