java - 是否有可能使具有特定 Java 代码的 Java 反编译器崩溃?

标签 java decompiling

<分区>

正如标题所说,只使用 Java 代码,所以没有字节码,是否有可能使大多数通用 java 反编译器崩溃,比方说您通过谷歌搜索“java 反编译器”找到的那些?

我知道这不会阻止人们构建一个特定的反编译器来解决这个问题,但它肯定会让人们远离简单的反编译文件。

我一直在思考以下我希望永远不会在生产中遇到的愚蠢代码:

final public class X {
    //... interesting stuff

    @Override
    public String toString() {
        return toString();
    }
}

例如,这可能是针对想要打印您的对象的人的反制措施。

最佳答案

这取决于实现。如果他们不识别最新的字节码指令,它可能会崩溃,如果他们无法弄清楚将您的字节码指令反编译成什么,它可能会崩溃。然而,根据我的经验,当反编译器无法弄清楚将字节代码反编译成什么时,他们只会将他们无法弄清楚的字节代码转储到他们已经反编译的其余 Java 源代码中。尝试看到这一点的建议是反编译最初用另一种 JVM 语言(如 Scala 或 Clojure)编写的程序。

关于java - 是否有可能使具有特定 Java 代码的 Java 反编译器崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207135/

相关文章:

java - 检测编译的 jar 和 repo 中的代码之间的差异

java - 反编译java类文件并与svn对比

c++ - 是否可以反编译C++可执行文件

java - 使用 Java 正则表达式模式解析字符串?

java - 为什么使用具有共同祖先的菱形案例来解释 Java 多继承问题,而不是两个不相关的父类?

dll - 如何将 exe 或 dll 反编译为程序集

.net - 是否可以防止反编译 .NET MSIL DLL?

分布式系统的Java框架

java - 当要获取的字段作为 spring data jpa 中的请求的一部分出现时,我们如何以所需的格式获取 ResultSet?

java - 如何使用java代码在eclipse的控制台中插入值