summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz
diff options
context:
space:
mode:
authorGravatar Thiakil2018-07-11 15:58:19 +0800
committerGravatar Thiakil2018-07-11 15:58:19 +0800
commitfb3e7bbf5b450138ab0b8493ff725f36407ee5bc (patch)
tree65895bbc6cf1766f4ca01e1257619ab1993e71dc /src/main/java/cuchaz
parentmake CachingClasspathTypeLoader public (diff)
downloadenigma-fb3e7bbf5b450138ab0b8493ff725f36407ee5bc.tar.gz
enigma-fb3e7bbf5b450138ab0b8493ff725f36407ee5bc.tar.xz
enigma-fb3e7bbf5b450138ab0b8493ff725f36407ee5bc.zip
support enum switches with obfuscated SwitchMaps
Diffstat (limited to 'src/main/java/cuchaz')
-rw-r--r--src/main/java/cuchaz/enigma/Deobfuscator.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java
index b2cecfe2..6ea1c40b 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;
25import com.strobel.decompiler.languages.java.ast.AstBuilder; 25import com.strobel.decompiler.languages.java.ast.AstBuilder;
26import com.strobel.decompiler.languages.java.ast.CompilationUnit; 26import com.strobel.decompiler.languages.java.ast.CompilationUnit;
27import com.strobel.decompiler.languages.java.ast.InsertParenthesesVisitor; 27import com.strobel.decompiler.languages.java.ast.InsertParenthesesVisitor;
28import com.strobel.decompiler.languages.java.ast.transforms.IAstTransform;
28import cuchaz.enigma.analysis.*; 29import cuchaz.enigma.analysis.*;
29import cuchaz.enigma.bytecode.ClassProtectifier; 30import cuchaz.enigma.bytecode.ClassProtectifier;
30import cuchaz.enigma.bytecode.ClassPublifier; 31import cuchaz.enigma.bytecode.ClassPublifier;
@@ -32,6 +33,7 @@ import cuchaz.enigma.mapping.*;
32import cuchaz.enigma.mapping.entry.*; 33import cuchaz.enigma.mapping.entry.*;
33import cuchaz.enigma.throwables.IllegalNameException; 34import cuchaz.enigma.throwables.IllegalNameException;
34import cuchaz.enigma.utils.Utils; 35import cuchaz.enigma.utils.Utils;
36import oml.ast.transformers.ObfuscatedEnumSwitchRewriterTransform;
35import org.objectweb.asm.ClassWriter; 37import org.objectweb.asm.ClassWriter;
36import org.objectweb.asm.Opcodes; 38import org.objectweb.asm.Opcodes;
37import org.objectweb.asm.tree.ClassNode; 39import org.objectweb.asm.tree.ClassNode;
@@ -200,6 +202,7 @@ public class Deobfuscator {
200 AstBuilder builder = new AstBuilder(context); 202 AstBuilder builder = new AstBuilder(context);
201 builder.addType(resolvedType); 203 builder.addType(resolvedType);
202 builder.runTransformations(null); 204 builder.runTransformations(null);
205 runCustomTransforms(builder, context);
203 return builder.getCompilationUnit(); 206 return builder.getCompilationUnit();
204 } 207 }
205 208
@@ -656,6 +659,15 @@ public class Deobfuscator {
656 throw new Error("Unknown entry desc: " + obfEntry); 659 throw new Error("Unknown entry desc: " + obfEntry);
657 } 660 }
658 661
662 public static void runCustomTransforms(AstBuilder builder, DecompilerContext context){
663 List<IAstTransform> transformers = Arrays.asList(
664 new ObfuscatedEnumSwitchRewriterTransform(context)
665 );
666 for (IAstTransform transform : transformers){
667 transform.run(builder.getCompilationUnit());
668 }
669 }
670
659 public interface ProgressListener { 671 public interface ProgressListener {
660 void init(int totalWork, String title); 672 void init(int totalWork, String title);
661 673