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 e555b05de..8949dd6f4 100644 --- a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java +++ b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java @@ -11,6 +11,7 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; +import jadx.core.dex.attributes.AFlag; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -225,6 +226,8 @@ public class Deobfuscator { clsInfo.rename(cls.dex().root(), fullName); } for (FieldNode field : cls.getFields()) { + if (field.contains(AFlag.DONT_RENAME)) + continue; renameField(field); } for (MethodNode mth : cls.getMethods()) { diff --git a/jadx-core/src/main/java/jadx/core/dex/attributes/AFlag.java b/jadx-core/src/main/java/jadx/core/dex/attributes/AFlag.java index 06d4824f1..1a4e3c61c 100644 --- a/jadx-core/src/main/java/jadx/core/dex/attributes/AFlag.java +++ b/jadx-core/src/main/java/jadx/core/dex/attributes/AFlag.java @@ -19,6 +19,7 @@ public enum AFlag { DONT_SHRINK, DONT_INLINE, DONT_GENERATE, + DONT_RENAME, // do not rename during deobfuscation SKIP, REMOVE, diff --git a/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java b/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java index 3efb5125a..c5cd4bb2f 100644 --- a/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.TreeMap; import com.android.dx.rop.code.AccessFlags; +import jadx.core.dex.attributes.AFlag; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; @@ -124,6 +125,7 @@ public class AndroidResourcesUtils { if (fieldNode != null && !fieldNode.getName().equals(resName) && NameMapper.isValidIdentifier(resName)) { + fieldNode.add(AFlag.DONT_RENAME); fieldNode.getFieldInfo().setAlias(resName); } }