From fb3e7bbf5b450138ab0b8493ff725f36407ee5bc Mon Sep 17 00:00:00 2001 From: Thiakil Date: Wed, 11 Jul 2018 15:58:19 +0800 Subject: support enum switches with obfuscated SwitchMaps --- src/main/java/cuchaz/enigma/Deobfuscator.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/main/java/cuchaz/enigma/Deobfuscator.java') diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java index b2cecfe..6ea1c40 100644 --- a/src/main/java/cuchaz/enigma/Deobfuscator.java +++ b/src/main/java/cuchaz/enigma/Deobfuscator.java @@ -25,6 +25,7 @@ import com.strobel.decompiler.languages.java.JavaOutputVisitor; import com.strobel.decompiler.languages.java.ast.AstBuilder; import com.strobel.decompiler.languages.java.ast.CompilationUnit; import com.strobel.decompiler.languages.java.ast.InsertParenthesesVisitor; +import com.strobel.decompiler.languages.java.ast.transforms.IAstTransform; import cuchaz.enigma.analysis.*; import cuchaz.enigma.bytecode.ClassProtectifier; import cuchaz.enigma.bytecode.ClassPublifier; @@ -32,6 +33,7 @@ import cuchaz.enigma.mapping.*; import cuchaz.enigma.mapping.entry.*; import cuchaz.enigma.throwables.IllegalNameException; import cuchaz.enigma.utils.Utils; +import oml.ast.transformers.ObfuscatedEnumSwitchRewriterTransform; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.Opcodes; import org.objectweb.asm.tree.ClassNode; @@ -200,6 +202,7 @@ public class Deobfuscator { AstBuilder builder = new AstBuilder(context); builder.addType(resolvedType); builder.runTransformations(null); + runCustomTransforms(builder, context); return builder.getCompilationUnit(); } @@ -656,6 +659,15 @@ public class Deobfuscator { throw new Error("Unknown entry desc: " + obfEntry); } + public static void runCustomTransforms(AstBuilder builder, DecompilerContext context){ + List transformers = Arrays.asList( + new ObfuscatedEnumSwitchRewriterTransform(context) + ); + for (IAstTransform transform : transformers){ + transform.run(builder.getCompilationUnit()); + } + } + public interface ProgressListener { void init(int totalWork, String title); -- cgit v1.2.3