From 5f0dbf856b5dcb4c8d71ead6a24c2c0c44b32dab Mon Sep 17 00:00:00 2001 From: tRuNKator <34552981+tRuNKator@users.noreply.github.com> Date: Fri, 22 Mar 2019 16:54:22 +0500 Subject: [PATCH] fix: don't rename R class fields alias (PR #492) * fix: R class fields alias * implemented with clearer approach --- jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java | 3 +++ jadx-core/src/main/java/jadx/core/dex/attributes/AFlag.java | 1 + .../java/jadx/core/utils/android/AndroidResourcesUtils.java | 2 ++ 3 files changed, 6 insertions(+) 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); } }