diff --git a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java index a5e69067a..4a85a69d7 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java +++ b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java @@ -226,6 +226,9 @@ public class Deobfuscator { } private void processClass(ClassNode cls) { + if (isR(cls.getParentClass())) { + return; + } ClassInfo clsInfo = cls.getClassInfo(); String fullName = getClassFullName(clsInfo); if (!fullName.equals(clsInfo.getFullName())) { @@ -559,4 +562,27 @@ public class Deobfuscator { public PackageNode getRootPackage() { 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; + } }