调用 class “if”
Calling a class “if”
我正在尝试反编译/重新编译混淆的 Java 程序。从反编译的源代码来看,混淆器似乎成功调用了 class if
:
public class hX extends il implements ciS {
...
private bQk Llm = bQk.DwB();
private final CAR lTV = new if(this);
private final TYo RtQ = new ig(this);
private final TYo G2Z = new ih(this);
...
}
尝试重新编译此 class 现在当然会导致错误:
[javac] Compiling 1 source file to /home/qdii/cld/dev/bar/build/classes
[javac] /home/qdii/cld/dev/bar/src/hX.java:53: error: <identifier> expected
[javac] private final CAR lTV = new if(this);
有没有办法告诉 java 编译器接受 if
作为 class 名称?否则,我有什么选择?重命名 class 并找到所有对它的引用?
Java 源代码可能有这个约束,但字节码和类加载器不关心。
是编译器强制执行的。如果您使用 javac
或 manipulate or generate some bytecode 的替代编译器,那么您有可能完成通常不可能完成的事情。
这就是混淆器可能会做的事情。
混淆器可能正在利用这种可能性使反混淆变得更加困难或完全失败。基本上,您遇到的问题很可能是设计使然。
Is there a way to tell the java compiler to accept if as a class name?
没有。
Otherwise, what are my options? renaming the class and finding all the
references to it?
是的。
我正在尝试反编译/重新编译混淆的 Java 程序。从反编译的源代码来看,混淆器似乎成功调用了 class if
:
public class hX extends il implements ciS {
...
private bQk Llm = bQk.DwB();
private final CAR lTV = new if(this);
private final TYo RtQ = new ig(this);
private final TYo G2Z = new ih(this);
...
}
尝试重新编译此 class 现在当然会导致错误:
[javac] Compiling 1 source file to /home/qdii/cld/dev/bar/build/classes
[javac] /home/qdii/cld/dev/bar/src/hX.java:53: error: <identifier> expected
[javac] private final CAR lTV = new if(this);
有没有办法告诉 java 编译器接受 if
作为 class 名称?否则,我有什么选择?重命名 class 并找到所有对它的引用?
Java 源代码可能有这个约束,但字节码和类加载器不关心。
是编译器强制执行的。如果您使用 javac
或 manipulate or generate some bytecode 的替代编译器,那么您有可能完成通常不可能完成的事情。
这就是混淆器可能会做的事情。
混淆器可能正在利用这种可能性使反混淆变得更加困难或完全失败。基本上,您遇到的问题很可能是设计使然。
Is there a way to tell the java compiler to accept if as a class name?
没有。
Otherwise, what are my options? renaming the class and finding all the references to it?
是的。