From 75d462daee9c24e19e28b4e969f92ae83a026e7b Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 6 Aug 2014 22:18:12 -0400 Subject: show deobfuscated names in class inheritance --- src/cuchaz/enigma/Deobfuscator.java | 15 +++++++---- .../enigma/gui/ClassInheritanceTreeNode.java | 29 ++++++++++++++++------ src/cuchaz/enigma/gui/Gui.java | 2 +- src/cuchaz/enigma/gui/GuiController.java | 8 ++++-- 4 files changed, 38 insertions(+), 16 deletions(-) (limited to 'src/cuchaz') diff --git a/src/cuchaz/enigma/Deobfuscator.java b/src/cuchaz/enigma/Deobfuscator.java index 65e618a..2fceef1 100644 --- a/src/cuchaz/enigma/Deobfuscator.java +++ b/src/cuchaz/enigma/Deobfuscator.java @@ -100,11 +100,16 @@ public class Deobfuscator // update decompiler options m_settings.setTypeLoader( new TranslatingTypeLoader( m_jar, - m_mappings.getTranslator( m_ancestries, TranslationDirection.Obfuscating ), - m_mappings.getTranslator( m_ancestries, TranslationDirection.Deobfuscating ) + getTranslator( TranslationDirection.Obfuscating ), + getTranslator( TranslationDirection.Deobfuscating ) ) ); } + public Translator getTranslator( TranslationDirection direction ) + { + return m_mappings.getTranslator( m_ancestries, direction ); + } + public void getSeparatedClasses( List obfClasses, Map deobfClasses ) { Enumeration entries = m_jar.entries(); @@ -181,7 +186,7 @@ public class Deobfuscator public Entry obfuscateEntry( Entry deobfEntry ) { - Translator translator = m_mappings.getTranslator( m_ancestries, TranslationDirection.Obfuscating ); + Translator translator = getTranslator( TranslationDirection.Obfuscating ); if( deobfEntry instanceof ClassEntry ) { return translator.translateEntry( (ClassEntry)deobfEntry ); @@ -206,7 +211,7 @@ public class Deobfuscator public Entry deobfuscateEntry( Entry obfEntry ) { - Translator translator = m_mappings.getTranslator( m_ancestries, TranslationDirection.Deobfuscating ); + Translator translator = getTranslator( TranslationDirection.Deobfuscating ); if( obfEntry instanceof ClassEntry ) { return translator.translateEntry( (ClassEntry)obfEntry ); @@ -231,7 +236,7 @@ public class Deobfuscator public boolean hasMapping( Entry obfEntry ) { - Translator translator = m_mappings.getTranslator( m_ancestries, TranslationDirection.Deobfuscating ); + Translator translator = getTranslator( TranslationDirection.Deobfuscating ); if( obfEntry instanceof ClassEntry ) { String deobfName = translator.translate( (ClassEntry)obfEntry ); diff --git a/src/cuchaz/enigma/gui/ClassInheritanceTreeNode.java b/src/cuchaz/enigma/gui/ClassInheritanceTreeNode.java index 91000ed..d8e6755 100644 --- a/src/cuchaz/enigma/gui/ClassInheritanceTreeNode.java +++ b/src/cuchaz/enigma/gui/ClassInheritanceTreeNode.java @@ -17,36 +17,49 @@ import javax.swing.tree.DefaultMutableTreeNode; import com.beust.jcommander.internal.Lists; import cuchaz.enigma.mapping.Ancestries; +import cuchaz.enigma.mapping.Translator; public class ClassInheritanceTreeNode extends DefaultMutableTreeNode { private static final long serialVersionUID = 4432367405826178490L; - String m_className; + private Translator m_deobfuscatingTranslator; + private String m_obfClassName; - public ClassInheritanceTreeNode( String className ) + public ClassInheritanceTreeNode( Translator deobfuscatingTranslator, String obfClassName ) { - m_className = className; + m_deobfuscatingTranslator = deobfuscatingTranslator; + m_obfClassName = obfClassName; } - public String getClassName( ) + public String getObfClassName( ) { - return m_className; + return m_obfClassName; + } + + public String getDeobfClassName( ) + { + return m_deobfuscatingTranslator.translateClass( m_obfClassName ); } @Override public String toString( ) { - return m_className; + String deobfClassName = getDeobfClassName(); + if( deobfClassName != null ) + { + return deobfClassName; + } + return m_obfClassName; } public void load( Ancestries ancestries, boolean recurse ) { // get all the child nodes List nodes = Lists.newArrayList(); - for( String subclassName : ancestries.getSubclasses( m_className ) ) + for( String subclassName : ancestries.getSubclasses( m_obfClassName ) ) { - nodes.add( new ClassInheritanceTreeNode( subclassName ) ); + nodes.add( new ClassInheritanceTreeNode( m_deobfuscatingTranslator, subclassName ) ); } // add then to this node diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java index 2002a4d..e2ccb7d 100644 --- a/src/cuchaz/enigma/gui/Gui.java +++ b/src/cuchaz/enigma/gui/Gui.java @@ -272,7 +272,7 @@ public class Gui ClassInheritanceTreeNode node = (ClassInheritanceTreeNode)m_inheritanceTree.getSelectionPath().getLastPathComponent(); if( node != null ) { - m_controller.deobfuscateClass( new ClassFile( node.getClassName() ) ); + m_controller.deobfuscateClass( new ClassFile( node.getObfClassName() ) ); } } } diff --git a/src/cuchaz/enigma/gui/GuiController.java b/src/cuchaz/enigma/gui/GuiController.java index 452632f..7d37feb 100644 --- a/src/cuchaz/enigma/gui/GuiController.java +++ b/src/cuchaz/enigma/gui/GuiController.java @@ -31,6 +31,8 @@ import cuchaz.enigma.mapping.Entry; import cuchaz.enigma.mapping.EntryPair; import cuchaz.enigma.mapping.MappingsReader; import cuchaz.enigma.mapping.MappingsWriter; +import cuchaz.enigma.mapping.TranslationDirection; +import cuchaz.enigma.mapping.Translator; public class GuiController { @@ -132,8 +134,10 @@ public class GuiController public ClassInheritanceTreeNode getClassInheritance( ClassEntry classEntry ) { + Translator deobfuscatingTranslator = m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ); + // create a node for this class - ClassInheritanceTreeNode thisNode = new ClassInheritanceTreeNode( classEntry.getName() ); + ClassInheritanceTreeNode thisNode = new ClassInheritanceTreeNode( deobfuscatingTranslator, classEntry.getName() ); // expand all children recursively thisNode.load( m_deobfuscator.getAncestries(), true ); @@ -143,7 +147,7 @@ public class GuiController for( String superclassName : m_deobfuscator.getAncestries().getAncestry( classEntry.getName() ) ) { // add the parent node - ClassInheritanceTreeNode parentNode = new ClassInheritanceTreeNode( superclassName ); + ClassInheritanceTreeNode parentNode = new ClassInheritanceTreeNode( deobfuscatingTranslator, superclassName ); parentNode.add( node ); node = parentNode; } -- cgit v1.2.3