正如标题所说,只使用Java代码,所以没有字节码,是否有可能崩溃大多数通用的Java反编译器,比如说你通过谷歌搜索"java反编译器"找到的那些?
我知道这不会阻止人们构建一个特定的反编译器来解决这个问题,但它肯定会让人们远离简单地反编译文件。
我沿着以下愚蠢的代码段思考,我希望在生产中永远不会遇到:
final public class X {
//... interesting stuff
@Override
public String toString() {
return toString();
}
}
例如,这可能是针对想要打印出您的对象的人的可能对策。
这取决于实现。如果他们无法识别最新的字节码指令,它可能会崩溃,如果他们无法弄清楚将字节代码指令反编译到什么,它可能会崩溃。然而,根据我的经验,当反编译器无法弄清楚将字节码反编译到什么位置时,他们将简单地将他们无法弄清楚的字节码转储到他们已经反编译的其余 Java 源代码中。尝试看到这一点的建议是反编译最初用另一种JVM语言(如Scala或Clojure)编写的程序。