gpt4 book ai didi

java - 混淆代码包含相同的成员变量名称

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:57 25 4
gpt4 key购买 nike

我有一个混淆的 jar,它是我机器上 Tomcat 中部署的应用程序的一部分。该 jar 由一些具有相同变量名称的奇怪代码组成。我使用 jshrink 来反编译代码。

  static private org.apache.commons.logging.Log a;
private org.springframework.context.MessageSource a;
private org.springframework.context.support.MessageSourceAccessor a;
static private LicenseBean a;
static private ThreadLocal a;
private javax.servlet.ServletContext a;
private String a;

public LicenseBean() {
a = null;
a = null;
a = this;
}

是否是反编译过程的问题?我的问题是如果反编译过程正确的话JVM如何处理这个问题?

最佳答案

一些混淆器使用控制符号来使标识符难以阅读。这尤其涉及将代码打印到解释这些符号而不是打印其转义图标的控制台的情况。因此,这些名称实际上可能被混淆了,例如:

U+0061 U+200B * n

其中 U+0061 表示 aU+200B 是零长度宽度符号,对于每个 n 标识符来说,它需要递增的次数。在普通编辑器中,所有标识符都将显示为 a

一般来说,Java 字节代码不允许类的字段有重复的标识符,但它允许在 Java 源代码中使用不正常合法的标识符。如果您的代码可以运行,那么 Unicode 理论是最有可能的解释。也许您的反编译器也错过了这些字符,或者它们甚至没有放入源代码中。尝试使用显示不可见 Unicode 的编辑器读取上述类文件的字节码(javap 输出)来验证这一理论。

关于java - 混淆代码包含相同的成员变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25262890/

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