From c31b70da2f88c41936a3fd7d69f445ef1db6548d Mon Sep 17 00:00:00 2001 From: Runemoro Date: Mon, 26 Aug 2019 00:55:44 -0400 Subject: Use name proposal service when exporting deobfuscated jar or decompiled sources (#159) --- src/main/java/cuchaz/enigma/EnigmaProject.java | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'src/main/java/cuchaz/enigma/EnigmaProject.java') diff --git a/src/main/java/cuchaz/enigma/EnigmaProject.java b/src/main/java/cuchaz/enigma/EnigmaProject.java index bb2f7fa..a589c63 100644 --- a/src/main/java/cuchaz/enigma/EnigmaProject.java +++ b/src/main/java/cuchaz/enigma/EnigmaProject.java @@ -8,12 +8,11 @@ import com.strobel.decompiler.languages.java.ast.CompilationUnit; import cuchaz.enigma.analysis.ClassCache; import cuchaz.enigma.analysis.EntryReference; import cuchaz.enigma.analysis.index.JarIndex; +import cuchaz.enigma.api.service.NameProposalService; import cuchaz.enigma.bytecode.translators.SourceFixVisitor; import cuchaz.enigma.bytecode.translators.TranslationClassVisitor; import cuchaz.enigma.translation.Translator; -import cuchaz.enigma.translation.mapping.EntryMapping; -import cuchaz.enigma.translation.mapping.EntryRemapper; -import cuchaz.enigma.translation.mapping.MappingsChecker; +import cuchaz.enigma.translation.mapping.*; import cuchaz.enigma.translation.mapping.tree.DeltaTrackingTree; import cuchaz.enigma.translation.mapping.tree.EntryTree; import cuchaz.enigma.translation.representation.entry.ClassEntry; @@ -26,16 +25,19 @@ import org.objectweb.asm.tree.ClassNode; import java.io.BufferedWriter; import java.io.IOException; +import java.io.PrintWriter; import java.io.StringWriter; import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; import java.util.stream.Collectors; +import java.util.stream.Stream; public class EnigmaProject { private final Enigma enigma; @@ -141,7 +143,12 @@ public class EnigmaProject { public JarExport exportRemappedJar(ProgressListener progress) { Collection classEntries = jarIndex.getEntryIndex().getClasses(); - Translator deobfuscator = mapper.getDeobfuscator(); + + Translator deobfuscator = getEnigma() + .getServices() + .get(NameProposalService.TYPE) + .map(nameProposalService -> (Translator) new ProposingTranslator(mapper, nameProposalService)) + .orElse(mapper.getDeobfuscator()); AtomicInteger count = new AtomicInteger(); progress.init(classEntries.size(), "Deobfuscating classes..."); @@ -233,11 +240,14 @@ public class EnigmaProject { } private String decompileClass(ClassNode translatedNode, SourceProvider sourceProvider) { - CompilationUnit sourceTree = sourceProvider.getSources(translatedNode.name); - StringWriter writer = new StringWriter(); - sourceProvider.writeSource(writer, sourceTree); - + try { + CompilationUnit sourceTree = sourceProvider.getSources(translatedNode.name); + sourceProvider.writeSource(writer, sourceTree); + } catch (Throwable t) { + t.printStackTrace(); + t.printStackTrace(new PrintWriter(writer)); + } return writer.toString(); } } -- cgit v1.2.3