From d129be7e863353252f4ed78f6bc208544fbe7921 Mon Sep 17 00:00:00 2001 From: Julian Burner <48808497+NebelNidas@users.noreply.github.com> Date: Mon, 9 Oct 2023 19:46:51 +0200 Subject: [PATCH] fix: update to Mapping-IO 0.5 (PR #2029) * Update to Mapping-IO 0.5 * Fix Spotless error * Fix Spotless error (2) * Sort mappings by name when exporting --- .../plugins/mappings/RenameMappingsGui.java | 7 ++- .../jadx-rename-mappings/build.gradle.kts | 10 +-- .../libs/mapping-io-0.4.0-SNAPSHOT.jar | Bin 128124 -> 0 bytes .../plugins/mappings/RenameMappingsData.java | 10 +-- .../mappings/load/ApplyMappingsPass.java | 24 ++++---- .../mappings/load/CodeMappingsPass.java | 28 ++++----- .../mappings/load/LoadMappingsPass.java | 11 ++-- .../mappings/save/MappingExporter.java | 58 ++++++++++-------- 8 files changed, 77 insertions(+), 71 deletions(-) delete mode 100644 jadx-plugins/jadx-rename-mappings/libs/mapping-io-0.4.0-SNAPSHOT.jar diff --git a/jadx-gui/src/main/java/jadx/gui/plugins/mappings/RenameMappingsGui.java b/jadx-gui/src/main/java/jadx/gui/plugins/mappings/RenameMappingsGui.java index 6224c0000..bc2fa0bfc 100644 --- a/jadx-gui/src/main/java/jadx/gui/plugins/mappings/RenameMappingsGui.java +++ b/jadx-gui/src/main/java/jadx/gui/plugins/mappings/RenameMappingsGui.java @@ -61,15 +61,16 @@ public class RenameMappingsGui { public void addMenuActions(JMenu menu) { openMappingsMenu = new JMenu(NLS.str("file.open_mappings")); - openMappingsMenu.add(new ActionHandler(ev -> openMappings(MappingFormat.PROGUARD, true)).withNameAndDesc("Proguard (inverted)")); - openMappingsMenu.add(new ActionHandler(ev -> openMappings(MappingFormat.PROGUARD, false)).withNameAndDesc("Proguard")); + openMappingsMenu.add(new ActionHandler(ev -> openMappings(MappingFormat.PROGUARD_FILE, true)) + .withNameAndDesc("Proguard (inverted)")); + openMappingsMenu.add(new ActionHandler(ev -> openMappings(MappingFormat.PROGUARD_FILE, false)).withNameAndDesc("Proguard")); saveMappingsAction = new ActionHandler(this::saveMappings).withNameAndDesc(NLS.str("file.save_mappings")); saveMappingsAsMenu = new JMenu(NLS.str("file.save_mappings_as")); for (MappingFormat mappingFormat : MappingFormat.values()) { - if (mappingFormat != MappingFormat.PROGUARD) { + if (mappingFormat != MappingFormat.PROGUARD_FILE) { openMappingsMenu.add(new ActionHandler(ev -> openMappings(mappingFormat, false)) .withNameAndDesc(mappingFormat.name)); } diff --git a/jadx-plugins/jadx-rename-mappings/build.gradle.kts b/jadx-plugins/jadx-rename-mappings/build.gradle.kts index 82245ba60..3425cab8c 100644 --- a/jadx-plugins/jadx-rename-mappings/build.gradle.kts +++ b/jadx-plugins/jadx-rename-mappings/build.gradle.kts @@ -6,12 +6,8 @@ plugins { dependencies { api(project(":jadx-core")) - // TODO: Switch back to upstream once this PR gets merged: - // https://github.com/FabricMC/mapping-io/pull/19 - // implementation 'net.fabricmc:mapping-io:0.3.0' - api(files("libs/mapping-io-0.4.0-SNAPSHOT.jar")) - - constraints { - runtimeOnly("org.ow2.asm:asm:9.5") + api("net.fabricmc:mapping-io:0.5.0-beta.1") { + exclude("org.ow2.asm:asm") + exclude("net.fabricmc:tiny-remapper") } } diff --git a/jadx-plugins/jadx-rename-mappings/libs/mapping-io-0.4.0-SNAPSHOT.jar b/jadx-plugins/jadx-rename-mappings/libs/mapping-io-0.4.0-SNAPSHOT.jar deleted file mode 100644 index 68be1ce1e070721dfc6ab5e7beb7a56930c13605..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128124 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 process(root, mappingTree)); } - private void process(RootNode root, MappingTree mappingTree) { + private void process(RootNode root, MappingTreeView mappingTree) { for (ClassNode cls : root.getClasses()) { String clsRawName = cls.getClassInfo().getRawName().replace('.', '/'); - ClassMapping mapping = mappingTree.getClass(clsRawName); + ClassMappingView mapping = mappingTree.getClass(clsRawName); if (mapping != null) { processClass(cls, mapping); } } } - private static void processClass(ClassNode cls, ClassMapping classMapping) { + private static void processClass(ClassNode cls, ClassMappingView classMapping) { String alias = classMapping.getDstName(0); if (alias != null) { cls.rename(alias.replace('/', '.')); @@ -60,7 +60,7 @@ public class ApplyMappingsPass implements JadxPreparePass { for (FieldNode field : cls.getFields()) { FieldInfo fieldInfo = field.getFieldInfo(); String signature = TypeGen.signature(fieldInfo.getType()); - FieldMapping fieldMapping = classMapping.getField(fieldInfo.getName(), signature); + FieldMappingView fieldMapping = classMapping.getField(fieldInfo.getName(), signature); if (fieldMapping != null) { processField(field, fieldMapping); } @@ -69,14 +69,14 @@ public class ApplyMappingsPass implements JadxPreparePass { MethodInfo methodInfo = method.getMethodInfo(); String methodName = methodInfo.getName(); String methodDesc = methodInfo.getShortId().substring(methodName.length()); - MethodMapping methodMapping = classMapping.getMethod(methodName, methodDesc); + MethodMappingView methodMapping = classMapping.getMethod(methodName, methodDesc); if (methodMapping != null) { processMethod(method, methodMapping); } } } - private static void processField(FieldNode field, FieldMapping fieldMapping) { + private static void processField(FieldNode field, FieldMappingView fieldMapping) { String alias = fieldMapping.getDstName(0); if (alias != null) { field.rename(alias); @@ -87,7 +87,7 @@ public class ApplyMappingsPass implements JadxPreparePass { } } - private static void processMethod(MethodNode method, MethodMapping methodMapping) { + private static void processMethod(MethodNode method, MethodMappingView methodMapping) { String alias = methodMapping.getDstName(0); if (alias != null) { method.rename(alias); diff --git a/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/load/CodeMappingsPass.java b/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/load/CodeMappingsPass.java index bd1c24a92..e6922dfb0 100644 --- a/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/load/CodeMappingsPass.java +++ b/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/load/CodeMappingsPass.java @@ -4,10 +4,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import net.fabricmc.mappingio.tree.MappingTree; -import net.fabricmc.mappingio.tree.MappingTree.ClassMapping; -import net.fabricmc.mappingio.tree.MappingTree.MethodArgMapping; -import net.fabricmc.mappingio.tree.MappingTree.MethodMapping; +import net.fabricmc.mappingio.tree.MappingTreeView; +import net.fabricmc.mappingio.tree.MappingTreeView.ClassMappingView; +import net.fabricmc.mappingio.tree.MappingTreeView.MethodArgMappingView; +import net.fabricmc.mappingio.tree.MappingTreeView.MethodMappingView; import jadx.api.plugins.pass.JadxPassInfo; import jadx.api.plugins.pass.impl.OrderedJadxPassInfo; @@ -20,7 +20,7 @@ import jadx.plugins.mappings.RenameMappingsData; import jadx.plugins.mappings.utils.DalvikToJavaBytecodeUtils; public class CodeMappingsPass implements JadxDecompilePass { - private Map clsRenamesMap; + private Map clsRenamesMap; @Override public JadxPassInfo getInfo() { @@ -36,14 +36,14 @@ public class CodeMappingsPass implements JadxDecompilePass { if (data == null) { return; } - MappingTree mappingTree = data.getMappings(); + MappingTreeView mappingTree = data.getMappings(); updateMappingsMap(mappingTree); root.registerCodeDataUpdateListener(codeData -> updateMappingsMap(mappingTree)); } @Override public boolean visit(ClassNode cls) { - ClassMapping classMapping = getMapping(cls); + ClassMappingView classMapping = getMapping(cls); if (classMapping != null) { applyRenames(cls, classMapping); } @@ -55,7 +55,7 @@ public class CodeMappingsPass implements JadxDecompilePass { public void visit(MethodNode mth) { } - private static void applyRenames(ClassNode cls, ClassMapping classMapping) { + private static void applyRenames(ClassNode cls, ClassMappingView classMapping) { for (MethodNode mth : cls.getMethods()) { String methodName = mth.getMethodInfo().getName(); String methodDesc = mth.getMethodInfo().getShortId().substring(methodName.length()); @@ -63,12 +63,12 @@ public class CodeMappingsPass implements JadxDecompilePass { if (ssaVars.isEmpty()) { continue; } - MethodMapping methodMapping = classMapping.getMethod(methodName, methodDesc); + MethodMappingView methodMapping = classMapping.getMethod(methodName, methodDesc); if (methodMapping == null) { continue; } // Method args - for (MethodArgMapping argMapping : methodMapping.getArgs()) { + for (MethodArgMappingView argMapping : methodMapping.getArgs()) { Integer mappingLvIndex = argMapping.getLvIndex(); for (SSAVar ssaVar : ssaVars) { Integer actualLvIndex = DalvikToJavaBytecodeUtils.getMethodArgLvIndex(ssaVar, mth); @@ -82,7 +82,7 @@ public class CodeMappingsPass implements JadxDecompilePass { } } - private ClassMapping getMapping(ClassNode cls) { + private ClassMappingView getMapping(ClassNode cls) { if (clsRenamesMap == null || clsRenamesMap.isEmpty()) { return null; } @@ -90,10 +90,10 @@ public class CodeMappingsPass implements JadxDecompilePass { return clsRenamesMap.get(classPath); } - private void updateMappingsMap(MappingTree mappings) { + private void updateMappingsMap(MappingTreeView mappings) { clsRenamesMap = new HashMap<>(); - for (ClassMapping cls : mappings.getClasses()) { - for (MethodMapping mth : cls.getMethods()) { + for (ClassMappingView cls : mappings.getClasses()) { + for (MethodMappingView mth : cls.getMethods()) { if (!mth.getArgs().isEmpty() || !mth.getVars().isEmpty()) { clsRenamesMap.put(cls.getSrcName(), cls); break; diff --git a/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/load/LoadMappingsPass.java b/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/load/LoadMappingsPass.java index 47be5dcfd..9bfea0add 100644 --- a/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/load/LoadMappingsPass.java +++ b/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/load/LoadMappingsPass.java @@ -6,8 +6,9 @@ import java.util.Collections; import net.fabricmc.mappingio.MappingReader; import net.fabricmc.mappingio.MappingUtil; import net.fabricmc.mappingio.adapter.MappingSourceNsSwitch; -import net.fabricmc.mappingio.tree.MappingTree; +import net.fabricmc.mappingio.tree.MappingTreeView; import net.fabricmc.mappingio.tree.MemoryMappingTree; +import net.fabricmc.mappingio.tree.VisitableMappingTree; import jadx.api.JadxArgs; import jadx.api.plugins.pass.JadxPassInfo; @@ -33,14 +34,14 @@ public class LoadMappingsPass implements JadxPreparePass { @Override public void init(RootNode root) { - MappingTree mappings = loadMapping(root.getArgs()); + MappingTreeView mappings = loadMapping(root.getArgs()); root.getAttributes().add(new RenameMappingsData(mappings)); } - private MappingTree loadMapping(JadxArgs args) { + private MappingTreeView loadMapping(JadxArgs args) { try { Path mappingsPath = args.getUserRenamesMappingsPath(); - MemoryMappingTree mappingTree = new MemoryMappingTree(); + VisitableMappingTree mappingTree = new MemoryMappingTree(); MappingReader.read(mappingsPath, options.getFormat(), mappingTree); if (mappingTree.getSrcNamespace() == null) { mappingTree.setSrcNamespace(MappingUtil.NS_SOURCE_FALLBACK); @@ -53,7 +54,7 @@ public class LoadMappingsPass implements JadxPreparePass { mappingTree.getDstNamespaces().size())); } if (options.isInvert()) { - MemoryMappingTree invertedMappingTree = new MemoryMappingTree(); + VisitableMappingTree invertedMappingTree = new MemoryMappingTree(); String dstNamespace = mappingTree.getDstNamespaces().get(0); mappingTree.accept(new MappingSourceNsSwitch(invertedMappingTree, dstNamespace)); return invertedMappingTree; diff --git a/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/save/MappingExporter.java b/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/save/MappingExporter.java index 462d203a4..a7671f347 100644 --- a/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/save/MappingExporter.java +++ b/jadx-plugins/jadx-rename-mappings/src/main/java/jadx/plugins/mappings/save/MappingExporter.java @@ -10,6 +10,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; @@ -21,8 +22,10 @@ import net.fabricmc.mappingio.MappedElementKind; import net.fabricmc.mappingio.MappingUtil; import net.fabricmc.mappingio.MappingWriter; import net.fabricmc.mappingio.format.MappingFormat; -import net.fabricmc.mappingio.tree.MappingTree; +import net.fabricmc.mappingio.tree.MappingTreeView; import net.fabricmc.mappingio.tree.MemoryMappingTree; +import net.fabricmc.mappingio.tree.VisitOrder; +import net.fabricmc.mappingio.tree.VisitableMappingTree; import jadx.api.ICodeInfo; import jadx.api.data.ICodeComment; @@ -52,19 +55,19 @@ public class MappingExporter { private static final Logger LOG = LoggerFactory.getLogger(MappingExporter.class); private final RootNode root; - private final @Nullable MappingTree loadedMappingTree; + private final @Nullable MappingTreeView loadedMappingTree; public MappingExporter(RootNode root) { this.root = root; this.loadedMappingTree = RenameMappingsData.getTree(this.root); } - private List> collectMethodVars(MethodNode methodNode) { + private List>> collectMethodVars(MethodNode methodNode) { ICodeInfo codeInfo = methodNode.getTopParentClass().getCode(); int mthDefPos = methodNode.getDefPosition(); int mthLineEndPos = CodeUtils.getLineEndForPos(codeInfo.getCodeStr(), mthDefPos); - List> vars = new ArrayList<>(); + List>> vars = new ArrayList<>(); AtomicInteger lastOffset = new AtomicInteger(-1); codeInfo.getCodeMetadata().searchDown(mthLineEndPos, (pos, ann) -> { if (ann instanceof InsnCodeOffset) { @@ -74,12 +77,17 @@ public class MappingExporter { ICodeNodeRef declRef = ((NodeDeclareRef) ann).getNode(); if (declRef instanceof VarNode) { VarNode varNode = (VarNode) declRef; - if (!varNode.getMth().equals(methodNode)) { - // Stop if we've gone too far and have entered a different method + if (!varNode.getMth().equals(methodNode)) { // Stop if we've gone too far and have entered a different method + if (!vars.isEmpty()) { + vars.get(vars.size() - 1).getValue().setValue(declRef.getDefPosition() - 1); + } return Boolean.TRUE; } if (lastOffset.get() != -1) { - vars.add(new SimpleEntry(varNode, lastOffset.get())); + if (!vars.isEmpty()) { + vars.get(vars.size() - 1).getValue().setValue(lastOffset.get() - 1); + } + vars.add(new SimpleEntry>(varNode, new SimpleEntry<>(lastOffset.get(), null))); } else { LOG.warn("Local variable not present in bytecode, skipping: " + methodNode.getMethodInfo().getRawFullId() + "#" + varNode.getName()); @@ -93,7 +101,7 @@ public class MappingExporter { } public void exportMappings(Path path, JadxCodeData codeData, MappingFormat mappingFormat) { - MemoryMappingTree mappingTree = new MemoryMappingTree(); + VisitableMappingTree mappingTree = new MemoryMappingTree(); // Map < SrcName > Set mappedClasses = new HashSet<>(); // Map < DeclClass + ShortId > @@ -102,7 +110,7 @@ public class MappingExporter { Set methodsWithMappedElements = new HashSet<>(); // Map < DeclClass + MethodShortId + CodeRef, NewName > Map mappedMethodArgsAndVars = new HashMap<>(); - // Map < DeclClass + *ShortId + *CodeRef, Comment > + // Map < DeclClass [+ ShortId] [+ CodeRef], Comment > Map comments = new HashMap<>(); // We have to do this so we know for sure which elements are *manually* renamed @@ -222,10 +230,12 @@ public class MappingExporter { // Not checking for comments since method args can't have any } // Method vars - List> vars = collectMethodVars(mth); - for (SimpleEntry entry : vars) { + var vars = collectMethodVars(mth); + for (int i = 0; i < vars.size(); i++) { + var entry = vars.get(i); VarNode var = entry.getKey(); - int offset = entry.getValue(); + int startOpIdx = entry.getValue().getKey(); + int endOpIdx = entry.getValue().getValue(); Integer lvIndex = DalvikToJavaBytecodeUtils.getMethodVarLvIndex(var); if (lvIndex == null) { lvIndex = -1; @@ -233,12 +243,12 @@ public class MappingExporter { String key = rawClassName + methodInfo.getShortId() + JadxCodeRef.forVar(var.getReg(), var.getSsa()); if (mappedMethodArgsAndVars.containsKey(key)) { - visitMethodVar(mappingTree, classPath, methodName, methodDesc, lvtIndex, lvIndex, offset); + visitMethodVar(mappingTree, classPath, methodName, methodDesc, lvtIndex, lvIndex, startOpIdx, endOpIdx); mappingTree.visitDstName(MappedElementKind.METHOD_VAR, 0, mappedMethodArgsAndVars.get(key)); } - key = rawClassName + methodInfo.getShortId() + JadxCodeRef.forInsn(offset); + key = rawClassName + methodInfo.getShortId() + JadxCodeRef.forInsn(startOpIdx); if (comments.containsKey(key)) { - visitMethodVar(mappingTree, classPath, methodName, methodDesc, lvtIndex, lvIndex, offset); + visitMethodVar(mappingTree, classPath, methodName, methodDesc, lvtIndex, lvIndex, startOpIdx, endOpIdx); mappingTree.visitComment(MappedElementKind.METHOD_VAR, comments.get(key)); } lvtIndex++; @@ -246,34 +256,32 @@ public class MappingExporter { } } // Write file - MappingWriter writer = MappingWriter.create(path, mappingFormat); - mappingTree.accept(writer); + mappingTree.accept(MappingWriter.create(path, mappingFormat), VisitOrder.createByName()); mappingTree.visitEnd(); - writer.close(); } catch (IOException e) { LOG.error("Failed to save deobfuscation map file '{}'", path.toAbsolutePath(), e); } } - private void visitField(MemoryMappingTree tree, String classPath, String srcName, String srcDesc) { + private void visitField(VisitableMappingTree tree, String classPath, String srcName, String srcDesc) throws IOException { tree.visitClass(classPath); tree.visitField(srcName, srcDesc); } - private void visitMethod(MemoryMappingTree tree, String classPath, String srcName, String srcDesc) { + private void visitMethod(VisitableMappingTree tree, String classPath, String srcName, String srcDesc) throws IOException { tree.visitClass(classPath); tree.visitMethod(srcName, srcDesc); } - private void visitMethodArg(MemoryMappingTree tree, String classPath, String methodSrcName, String methodSrcDesc, int argPosition, - int lvIndex) { + private void visitMethodArg(VisitableMappingTree tree, String classPath, String methodSrcName, String methodSrcDesc, int argPosition, + int lvIndex) throws IOException { visitMethod(tree, classPath, methodSrcName, methodSrcDesc); tree.visitMethodArg(argPosition, lvIndex, null); } - private void visitMethodVar(MemoryMappingTree tree, String classPath, String methodSrcName, String methodSrcDesc, int lvtIndex, - int lvIndex, int startOpIdx) { + private void visitMethodVar(VisitableMappingTree tree, String classPath, String methodSrcName, String methodSrcDesc, int lvtIndex, + int lvIndex, int startOpIdx, int endOpIdx) throws IOException { visitMethod(tree, classPath, methodSrcName, methodSrcDesc); - tree.visitMethodVar(lvtIndex, lvIndex, startOpIdx, null); + tree.visitMethodVar(lvtIndex, lvIndex, startOpIdx, endOpIdx, null); } }