From f74baf08ce7f6778ef795269931d8c6cfc17b0db Mon Sep 17 00:00:00 2001 From: ThatGamerBlue Date: Fri, 11 Dec 2020 06:09:49 +0000 Subject: [PATCH] deobfuscator: add .tiny mapping dumper --- .../deobfuscators/mapping/MappingDumper.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/deobfuscator/src/test/java/net/runelite/deob/deobfuscators/mapping/MappingDumper.java b/deobfuscator/src/test/java/net/runelite/deob/deobfuscators/mapping/MappingDumper.java index 4e0ee82add..7818f9cf7e 100644 --- a/deobfuscator/src/test/java/net/runelite/deob/deobfuscators/mapping/MappingDumper.java +++ b/deobfuscator/src/test/java/net/runelite/deob/deobfuscators/mapping/MappingDumper.java @@ -31,6 +31,8 @@ import com.google.gson.JsonObject; import java.io.File; import java.io.IOException; import java.time.Instant; +import java.util.ArrayList; +import net.runelite.asm.Annotation; import net.runelite.asm.ClassFile; import net.runelite.asm.ClassGroup; import net.runelite.asm.Field; @@ -316,6 +318,64 @@ public class MappingDumper System.out.println(sBuilder.toString()); } + @Test + public void dumpTiny() throws IOException + { + ClassGroup group = JarUtil.loadJar(new File(properties.getRsClient())); + System.out.println("v1\tofficial\tintermediary"); + for (ClassFile clazz : group.getClasses()) + { + // CLASS obbed_name new_name + String implName = clazz.getName(); + String className = DeobAnnotations.getObfuscatedName(clazz); + if (className == null) + { + continue; + } + + System.out.println("CLASS\t" + className + "\t" + implName); + + for (Method method : clazz.getMethods()) + { + Annotation sig = method.findAnnotation(DeobAnnotations.OBFUSCATED_SIGNATURE); + Signature asmType = sig == null ? method.getDescriptor() : new Signature((String) sig.get("descriptor")); + + if (DeobAnnotations.getObfuscatedName(method) == null) + { + continue; + } + + if (sig != null) + { + Object val = sig.get("garbageValue"); + if (val != null && !val.equals("")) + { + ArrayList newArgs = new ArrayList<>(asmType.getArguments()); + newArgs.remove(newArgs.size() - 1); + asmType = new Signature(newArgs, asmType.getReturnValue()); + } + } + + // METHOD obbed_owner obbed_desc obbed_name new_name + System.out.println("METHOD\t" + className + "\t" + asmType.toString() + "\t" + DeobAnnotations.getObfuscatedName(method) + "\t" + method.getName()); + } + + for (Field field : clazz.getFields()) + { + Annotation sig = field.findAnnotation(DeobAnnotations.OBFUSCATED_SIGNATURE); + Type asmType = sig == null ? field.getType() : new Type((String) sig.get("descriptor")); + + if (DeobAnnotations.getObfuscatedName(field) == null) + { + continue; + } + + // FIELD obbed_owner obbed_desc obbed_name new_name + System.out.println("FIELD\t" + className + "\t" + asmType.toString() + "\t" + DeobAnnotations.getObfuscatedName(field) + "\t" + field.getName()); + } + } + } + @Test public void dumpJson() throws IOException {