gpt4 book ai didi

java - 有没有难以反编译的代码示例?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:18:51 24 4
gpt4 key购买 nike

有时在反编译 Java 代码时,反编译器无法正确反编译,最终会在输出中产生少量字节码。

反编译器的弱点是什么?有没有Java源代码编译成难反编译字节码的例子?

更新:

请注意,我知道利用此信息并不是在代码中隐藏 secret 的安全方法,反编译器可以在未来得到改进。

尽管如此,我仍然有兴趣找出今天的反编译器中有哪些代码。

最佳答案

任何经过混淆器处理的 Java 字节码都会从反编译器中得到“荒谬”的输出。此外,当您使用其他语言(如 Scala)编译为 JVM 字节码时,没有规定字节码可以很容易地用 Java 表示回来,而且很可能不会。

随着时间的推移,反编译器必须跟上新的语言特性和它们生成的字节码,因此新的语言特性不容易被您使用的工具逆转是有道理的。

编辑:作为 .NET 中的示例,以下代码:

lock (this)
{
DoSomething();
}

编译成这样:

Monitor.Enter(this);
try
{
DoSomething();
}
catch
{
Monitor.Exit(this);
}

反编译器必须知道 C#(与任何其他 .NET 语言相反)具有专门用于这两个调用的特殊语法。否则你会得到意想不到的(冗长的)结果。

关于java - 有没有难以反编译的代码示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com