From 38a790423bddce4a928a83d8f17cc5f4a41eeb81 Mon Sep 17 00:00:00 2001 From: Thog Date: Fri, 19 Aug 2016 10:48:19 +0200 Subject: Update Procyon (fix UTF-8 issues), disable debug line number in source code and make all decompiler settings configurable with system properties --- src/main/java/cuchaz/enigma/Deobfuscator.java | 40 +++++++++++----------- .../cuchaz/enigma/mapping/MappingsRenamer.java | 5 +++ src/main/java/cuchaz/enigma/utils/Utils.java | 6 ++++ 3 files changed, 31 insertions(+), 20 deletions(-) (limited to 'src/main/java/cuchaz') diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java index 4bd9414d..7c36e89a 100644 --- a/src/main/java/cuchaz/enigma/Deobfuscator.java +++ b/src/main/java/cuchaz/enigma/Deobfuscator.java @@ -13,7 +13,6 @@ package cuchaz.enigma; import com.google.common.base.Charsets; import com.google.common.collect.Maps; import com.google.common.collect.Sets; - import com.strobel.assembler.metadata.MetadataSystem; import com.strobel.assembler.metadata.TypeDefinition; import com.strobel.assembler.metadata.TypeReference; @@ -24,6 +23,13 @@ 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 cuchaz.enigma.analysis.*; +import cuchaz.enigma.bytecode.ClassProtectifier; +import cuchaz.enigma.bytecode.ClassPublifier; +import cuchaz.enigma.mapping.*; +import cuchaz.enigma.utils.Utils; +import javassist.CtClass; +import javassist.bytecode.Descriptor; import java.io.*; import java.util.List; @@ -33,13 +39,6 @@ import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.JarOutputStream; -import cuchaz.enigma.analysis.*; -import cuchaz.enigma.bytecode.ClassProtectifier; -import cuchaz.enigma.bytecode.ClassPublifier; -import cuchaz.enigma.mapping.*; -import javassist.CtClass; -import javassist.bytecode.Descriptor; - public class Deobfuscator { public interface ProgressListener { @@ -48,12 +47,12 @@ public class Deobfuscator { void onProgress(int numDone, String message); } - private JarFile jar; - private DecompilerSettings settings; - private JarIndex jarIndex; + private final JarFile jar; + private final DecompilerSettings settings; + private final JarIndex jarIndex; + private final MappingsRenamer renamer; + private final Map translatorCache; private Mappings mappings; - private MappingsRenamer renamer; - private Map translatorCache; public Deobfuscator(JarFile jar) { this.jar = jar; @@ -64,16 +63,17 @@ public class Deobfuscator { // config the decompiler this.settings = DecompilerSettings.javaDefaults(); - this.settings.setMergeVariables(true); - this.settings.setForceExplicitImports(true); - this.settings.setForceExplicitTypeArguments(true); - this.settings.setShowDebugLineNumbers(true); + this.settings.setMergeVariables(Utils.getSystemPropertyAsBoolean("enigma.mergeVariables", true)); + this.settings.setForceExplicitImports(Utils.getSystemPropertyAsBoolean("enigma.forceExplicitImports", true)); + this.settings.setForceExplicitTypeArguments( + Utils.getSystemPropertyAsBoolean("enigma.forceExplicitTypeArguments", true)); // DEBUG - //this.settings.setShowSyntheticMembers(true); + this.settings.setShowDebugLineNumbers(Utils.getSystemPropertyAsBoolean("enigma.showDebugLineNumbers", false)); + this.settings.setShowSyntheticMembers(Utils.getSystemPropertyAsBoolean("enigma.showSyntheticMembers", false)); // init defaults this.translatorCache = Maps.newTreeMap(); - + this.renamer = new MappingsRenamer(this.jarIndex, null); // init mappings setMappings(new Mappings()); } @@ -122,7 +122,7 @@ public class Deobfuscator { } this.mappings = val; - this.renamer = new MappingsRenamer(this.jarIndex, val); + this.renamer.setMappings(mappings); this.translatorCache.clear(); } diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java index 5d23dc0b..f244748f 100644 --- a/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java +++ b/src/main/java/cuchaz/enigma/mapping/MappingsRenamer.java @@ -31,6 +31,11 @@ public class MappingsRenamer { m_mappings = mappings; } + public void setMappings(Mappings mappings) + { + this.m_mappings = mappings; + } + public void setClassName(ClassEntry obf, String deobfName) { deobfName = NameValidator.validateClassName(deobfName, !obf.isInnerClass()); diff --git a/src/main/java/cuchaz/enigma/utils/Utils.java b/src/main/java/cuchaz/enigma/utils/Utils.java index c16c1fbf..73c2bc7e 100644 --- a/src/main/java/cuchaz/enigma/utils/Utils.java +++ b/src/main/java/cuchaz/enigma/utils/Utils.java @@ -88,4 +88,10 @@ public class Utils { manager.mouseMoved(new MouseEvent(component, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0, 0, 0, 0, false)); manager.setInitialDelay(oldDelay); } + + public static boolean getSystemPropertyAsBoolean(String property, boolean defValue) + { + String value = System.getProperty(property); + return value == null ? defValue : Boolean.parseBoolean(value); + } } -- cgit v1.2.3