Commit ab4721a8 authored by Ahmed Ashour's avatar Ahmed Ashour Committed by skylot

fix: don't rename R class in deobfuscation (#572) (PR #573)

parent 23c05bb5
...@@ -226,6 +226,9 @@ public class Deobfuscator { ...@@ -226,6 +226,9 @@ public class Deobfuscator {
} }
private void processClass(ClassNode cls) { private void processClass(ClassNode cls) {
if (isR(cls.getParentClass())) {
return;
}
ClassInfo clsInfo = cls.getClassInfo(); ClassInfo clsInfo = cls.getClassInfo();
String fullName = getClassFullName(clsInfo); String fullName = getClassFullName(clsInfo);
if (!fullName.equals(clsInfo.getFullName())) { if (!fullName.equals(clsInfo.getFullName())) {
...@@ -559,4 +562,27 @@ public class Deobfuscator { ...@@ -559,4 +562,27 @@ public class Deobfuscator {
public PackageNode getRootPackage() { public PackageNode getRootPackage() {
return rootPackage; return rootPackage;
} }
private static boolean isR(ClassNode cls) {
if (!cls.getClassInfo().getShortName().equals("R")) {
return false;
}
if (!cls.getMethods().isEmpty() || !cls.getFields().isEmpty()) {
return false;
}
for (ClassNode inner : cls.getInnerClasses()) {
for (MethodNode m : inner.getMethods()) {
if (!m.getMethodInfo().isConstructor() && !m.getMethodInfo().isClassInit()) {
return false;
}
}
for (FieldNode field : cls.getFields()) {
ArgType type = field.getType();
if (type != ArgType.INT && (!type.isArray() || type.getArrayElement() != ArgType.INT)) {
return false;
}
}
}
return true;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment