diff options
| author | 2018-07-11 15:58:19 +0800 | |
|---|---|---|
| committer | 2018-07-11 15:58:19 +0800 | |
| commit | fb3e7bbf5b450138ab0b8493ff725f36407ee5bc (patch) | |
| tree | 65895bbc6cf1766f4ca01e1257619ab1993e71dc /src/main/java/cuchaz | |
| parent | make CachingClasspathTypeLoader public (diff) | |
| download | enigma-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.java | 12 |
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; | |||
| 25 | import com.strobel.decompiler.languages.java.ast.AstBuilder; | 25 | import com.strobel.decompiler.languages.java.ast.AstBuilder; |
| 26 | import com.strobel.decompiler.languages.java.ast.CompilationUnit; | 26 | import com.strobel.decompiler.languages.java.ast.CompilationUnit; |
| 27 | import com.strobel.decompiler.languages.java.ast.InsertParenthesesVisitor; | 27 | import com.strobel.decompiler.languages.java.ast.InsertParenthesesVisitor; |
| 28 | import com.strobel.decompiler.languages.java.ast.transforms.IAstTransform; | ||
| 28 | import cuchaz.enigma.analysis.*; | 29 | import cuchaz.enigma.analysis.*; |
| 29 | import cuchaz.enigma.bytecode.ClassProtectifier; | 30 | import cuchaz.enigma.bytecode.ClassProtectifier; |
| 30 | import cuchaz.enigma.bytecode.ClassPublifier; | 31 | import cuchaz.enigma.bytecode.ClassPublifier; |
| @@ -32,6 +33,7 @@ import cuchaz.enigma.mapping.*; | |||
| 32 | import cuchaz.enigma.mapping.entry.*; | 33 | import cuchaz.enigma.mapping.entry.*; |
| 33 | import cuchaz.enigma.throwables.IllegalNameException; | 34 | import cuchaz.enigma.throwables.IllegalNameException; |
| 34 | import cuchaz.enigma.utils.Utils; | 35 | import cuchaz.enigma.utils.Utils; |
| 36 | import oml.ast.transformers.ObfuscatedEnumSwitchRewriterTransform; | ||
| 35 | import org.objectweb.asm.ClassWriter; | 37 | import org.objectweb.asm.ClassWriter; |
| 36 | import org.objectweb.asm.Opcodes; | 38 | import org.objectweb.asm.Opcodes; |
| 37 | import org.objectweb.asm.tree.ClassNode; | 39 | import 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 | ||