From 236c79260e965d6cd6ca6b4e5a72a8125b132920 Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sat, 23 Jun 2018 15:56:05 +0200 Subject: Apply deobfuscated name to transformed classes --- src/main/java/cuchaz/enigma/Deobfuscator.java | 18 ++++++++++++------ src/main/java/cuchaz/enigma/TranslatingTypeLoader.java | 5 +++-- 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java index bdd8873..ccd099c 100644 --- a/src/main/java/cuchaz/enigma/Deobfuscator.java +++ b/src/main/java/cuchaz/enigma/Deobfuscator.java @@ -393,15 +393,21 @@ public class Deobfuscator { public void writeJar(File out, ProgressListener progress) { - transformJar(out, progress, createTypeLoader()::createTransformer); + transformJar(out, progress, createTypeLoader()::transformInto); } public void protectifyJar(File out, ProgressListener progress) { - transformJar(out, progress, (node, writer) -> node.accept(new ClassProtectifier(Opcodes.ASM5, writer))); + transformJar(out, progress, (node, writer) -> { + node.accept(new ClassProtectifier(Opcodes.ASM5, writer)); + return node.name; + }); } public void publifyJar(File out, ProgressListener progress) { - transformJar(out, progress, (node, writer) -> node.accept(new ClassPublifier(Opcodes.ASM5, writer))); + transformJar(out, progress, (node, writer) -> { + node.accept(new ClassPublifier(Opcodes.ASM5, writer)); + return node.name; + }); } public void transformJar(File out, ProgressListener progress, ClassTransformer transformer) { @@ -418,8 +424,8 @@ public class Deobfuscator { try { ClassWriter writer = new ClassWriter(0); - transformer.write(node, writer); - outJar.putNextEntry(new JarEntry(node.name.replace('.', '/') + ".class")); + String transformedName = transformer.transform(node, writer); + outJar.putNextEntry(new JarEntry(transformedName.replace('.', '/') + ".class")); outJar.write(writer.toByteArray()); outJar.closeEntry(); } catch (Throwable t) { @@ -646,6 +652,6 @@ public class Deobfuscator { } public interface ClassTransformer { - void write(ClassNode node, ClassWriter writer); + String transform(ClassNode node, ClassWriter writer); } } diff --git a/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java b/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java index 3f1ff7a..34901d5 100644 --- a/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java +++ b/src/main/java/cuchaz/enigma/TranslatingTypeLoader.java @@ -111,7 +111,7 @@ public class TranslatingTypeLoader implements ITypeLoader { } ClassWriter writer = new ClassWriter(0); - createTransformer(node, writer); + transformInto(node, writer); // we have a transformed class! return writer.toByteArray(); @@ -145,7 +145,8 @@ public class TranslatingTypeLoader implements ITypeLoader { return classNamesToTry; } - public void createTransformer(ClassNode node, ClassWriter writer) { + public String transformInto(ClassNode node, ClassWriter writer) { node.accept(new TranslationClassVisitor(deobfuscatingTranslator, jarIndex, entryPool, Opcodes.ASM5, writer)); + return deobfuscatingTranslator.getTranslatedClass(new ClassEntry(node.name)).getName(); } } -- cgit v1.2.3