From 79e8b7ea7ed27d65582d1c399a78e540d0f42895 Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 22 Aug 2014 00:37:31 -0400 Subject: fixed constructor references in call graph searches clear reference list when opening single reference (instead of list of references) --- src/cuchaz/enigma/Deobfuscator.java | 3 +-- src/cuchaz/enigma/analysis/BridgeFixer.java | 1 - .../enigma/analysis/SourceIndexBehaviorVisitor.java | 21 ++++++++++++++++++++- src/cuchaz/enigma/gui/Gui.java | 5 +++++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/cuchaz/enigma/Deobfuscator.java b/src/cuchaz/enigma/Deobfuscator.java index a5feaa9..38f7af5 100644 --- a/src/cuchaz/enigma/Deobfuscator.java +++ b/src/cuchaz/enigma/Deobfuscator.java @@ -30,7 +30,6 @@ import cuchaz.enigma.analysis.EntryReference; import cuchaz.enigma.analysis.JarIndex; import cuchaz.enigma.analysis.SourceIndex; import cuchaz.enigma.analysis.SourceIndexVisitor; -import cuchaz.enigma.analysis.TreeDumpVisitor; import cuchaz.enigma.mapping.ArgumentEntry; import cuchaz.enigma.mapping.ClassEntry; import cuchaz.enigma.mapping.ClassMapping; @@ -163,7 +162,7 @@ public class Deobfuscator StringWriter buf = new StringWriter(); root.acceptVisitor( new InsertParenthesesVisitor(), null ); // DEBUG - root.acceptVisitor( new TreeDumpVisitor( new File( "tree.txt" ) ), null ); + //root.acceptVisitor( new TreeDumpVisitor( new File( "tree.txt" ) ), null ); root.acceptVisitor( new JavaOutputVisitor( new PlainTextOutput( buf ), m_settings ), null ); // build the source index diff --git a/src/cuchaz/enigma/analysis/BridgeFixer.java b/src/cuchaz/enigma/analysis/BridgeFixer.java index ee90f51..f13f68f 100644 --- a/src/cuchaz/enigma/analysis/BridgeFixer.java +++ b/src/cuchaz/enigma/analysis/BridgeFixer.java @@ -86,7 +86,6 @@ public class BridgeFixer catch( NotFoundException ex ) { // can't find the type? not a bridge method - ex.printStackTrace( System.err ); return null; } } diff --git a/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java b/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java index a943858..ab50552 100644 --- a/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java +++ b/src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java @@ -21,12 +21,14 @@ import com.strobel.decompiler.languages.java.ast.InvocationExpression; import com.strobel.decompiler.languages.java.ast.Keys; import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression; import com.strobel.decompiler.languages.java.ast.MethodDeclaration; +import com.strobel.decompiler.languages.java.ast.ObjectCreationExpression; import com.strobel.decompiler.languages.java.ast.ParameterDeclaration; import com.strobel.decompiler.languages.java.ast.SimpleType; import cuchaz.enigma.mapping.ArgumentEntry; import cuchaz.enigma.mapping.BehaviorEntry; import cuchaz.enigma.mapping.ClassEntry; +import cuchaz.enigma.mapping.ConstructorEntry; import cuchaz.enigma.mapping.Entry; import cuchaz.enigma.mapping.FieldEntry; import cuchaz.enigma.mapping.MethodEntry; @@ -57,9 +59,9 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor { MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE ); ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() ); - MethodEntry methodEntry = new MethodEntry( classEntry, ref.getName(), ref.getSignature() ); if( node.getTarget() instanceof MemberReferenceExpression ) { + MethodEntry methodEntry = new MethodEntry( classEntry, ref.getName(), ref.getSignature() ); index.addReference( ((MemberReferenceExpression)node.getTarget()).getMemberNameToken(), new EntryReference( methodEntry, m_behaviorEntry ) @@ -131,4 +133,21 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor return recurse( node, index ); } + + @Override + public Void visitObjectCreationExpression( ObjectCreationExpression node, SourceIndex index ) + { + MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE ); + ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() ); + ConstructorEntry constructorEntry = new ConstructorEntry( classEntry, ref.getSignature() ); + if( node.getType() instanceof SimpleType ) + { + index.addReference( + ((SimpleType)node.getType()).getIdentifierToken(), + new EntryReference( constructorEntry, m_behaviorEntry ) + ); + } + + return recurse( node, index ); + } } diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java index a5471a7..cd0fac7 100644 --- a/src/cuchaz/enigma/gui/Gui.java +++ b/src/cuchaz/enigma/gui/Gui.java @@ -479,6 +479,7 @@ public class Gui } } ); m_tokens.setPreferredSize( new Dimension( 0, 200 ) ); + m_tokens.setMinimumSize( new Dimension( 0, 200 ) ); JSplitPane callPanel = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, new JScrollPane( m_callsTree ), new JScrollPane( m_tokens ) ); callPanel.setResizeWeight( 1 ); // let the top side take all the slack callPanel.resetToPreferredSizes(); @@ -775,6 +776,10 @@ public class Gui m_tokens.setListData( sortedTokens ); m_tokens.setSelectedIndex( 0 ); } + else + { + m_tokens.setListData( new Vector() ); + } // show the first token showToken( sortedTokens.get( 0 ) ); -- cgit v1.2.3