From cc74d0e62cfdcf14c5918234f69d587d264807ed Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 13 Aug 2014 00:22:12 -0400 Subject: added support for field access searches added proper detection/handling for constructors --- src/cuchaz/enigma/gui/GuiController.java | 38 +++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'src/cuchaz/enigma/gui/GuiController.java') diff --git a/src/cuchaz/enigma/gui/GuiController.java b/src/cuchaz/enigma/gui/GuiController.java index b54aeba..534b0cc 100644 --- a/src/cuchaz/enigma/gui/GuiController.java +++ b/src/cuchaz/enigma/gui/GuiController.java @@ -21,13 +21,16 @@ import com.google.common.collect.Lists; import cuchaz.enigma.Deobfuscator; import cuchaz.enigma.analysis.ClassInheritanceTreeNode; +import cuchaz.enigma.analysis.FieldCallsTreeNode; import cuchaz.enigma.analysis.MethodCallsTreeNode; import cuchaz.enigma.analysis.MethodInheritanceTreeNode; import cuchaz.enigma.analysis.SourceIndex; import cuchaz.enigma.analysis.Token; import cuchaz.enigma.mapping.ClassEntry; +import cuchaz.enigma.mapping.ConstructorEntry; import cuchaz.enigma.mapping.Entry; import cuchaz.enigma.mapping.EntryPair; +import cuchaz.enigma.mapping.FieldEntry; import cuchaz.enigma.mapping.MappingsReader; import cuchaz.enigma.mapping.MappingsWriter; import cuchaz.enigma.mapping.MethodEntry; @@ -118,6 +121,10 @@ public class GuiController } Entry deobfEntry = m_index.getEntry( token ); + if( deobfEntry == null ) + { + return null; + } return new EntryPair( m_deobfuscator.obfuscateEntry( deobfEntry ), deobfEntry ); } @@ -149,16 +156,41 @@ public class GuiController return MethodInheritanceTreeNode.findNode( rootNode, obfMethodEntry ); } - public MethodCallsTreeNode getMethodCalls( MethodEntry obfMethodEntry ) + public FieldCallsTreeNode getFieldCalls( FieldEntry obfFieldEntry ) { - MethodCallsTreeNode rootNode = new MethodCallsTreeNode( + FieldCallsTreeNode rootNode = new FieldCallsTreeNode( m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ), - obfMethodEntry + obfFieldEntry ); rootNode.load( m_deobfuscator.getJarIndex(), true ); return rootNode; } + public MethodCallsTreeNode getMethodCalls( Entry obfEntry ) + { + MethodCallsTreeNode rootNode; + if( obfEntry instanceof MethodEntry ) + { + rootNode = new MethodCallsTreeNode( + m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ), + (MethodEntry)obfEntry + ); + } + else if( obfEntry instanceof ConstructorEntry ) + { + rootNode = new MethodCallsTreeNode( + m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ), + (ConstructorEntry)obfEntry + ); + } + else + { + throw new IllegalArgumentException( "entry must be a MethodEntry or a ConstructorEntry!" ); + } + rootNode.load( m_deobfuscator.getJarIndex(), true ); + return rootNode; + } + public void rename( Entry obfEntry, String newName ) { m_deobfuscator.rename( obfEntry, newName ); -- cgit v1.2.3