summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jeff2014-08-22 00:37:31 -0400
committerGravatar jeff2014-08-22 00:37:31 -0400
commit79e8b7ea7ed27d65582d1c399a78e540d0f42895 (patch)
tree1e1df66076275f19ad2fbe85ee548b12f97f5798 /src
parentfixed call graph searching (diff)
downloadenigma-fork-79e8b7ea7ed27d65582d1c399a78e540d0f42895.tar.gz
enigma-fork-79e8b7ea7ed27d65582d1c399a78e540d0f42895.tar.xz
enigma-fork-79e8b7ea7ed27d65582d1c399a78e540d0f42895.zip
fixed constructor references in call graph searches
clear reference list when opening single reference (instead of list of references)
Diffstat (limited to 'src')
-rw-r--r--src/cuchaz/enigma/Deobfuscator.java3
-rw-r--r--src/cuchaz/enigma/analysis/BridgeFixer.java1
-rw-r--r--src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java21
-rw-r--r--src/cuchaz/enigma/gui/Gui.java5
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;
30import cuchaz.enigma.analysis.JarIndex; 30import cuchaz.enigma.analysis.JarIndex;
31import cuchaz.enigma.analysis.SourceIndex; 31import cuchaz.enigma.analysis.SourceIndex;
32import cuchaz.enigma.analysis.SourceIndexVisitor; 32import cuchaz.enigma.analysis.SourceIndexVisitor;
33import cuchaz.enigma.analysis.TreeDumpVisitor;
34import cuchaz.enigma.mapping.ArgumentEntry; 33import cuchaz.enigma.mapping.ArgumentEntry;
35import cuchaz.enigma.mapping.ClassEntry; 34import cuchaz.enigma.mapping.ClassEntry;
36import cuchaz.enigma.mapping.ClassMapping; 35import cuchaz.enigma.mapping.ClassMapping;
@@ -163,7 +162,7 @@ public class Deobfuscator
163 StringWriter buf = new StringWriter(); 162 StringWriter buf = new StringWriter();
164 root.acceptVisitor( new InsertParenthesesVisitor(), null ); 163 root.acceptVisitor( new InsertParenthesesVisitor(), null );
165 // DEBUG 164 // DEBUG
166 root.acceptVisitor( new TreeDumpVisitor( new File( "tree.txt" ) ), null ); 165 //root.acceptVisitor( new TreeDumpVisitor( new File( "tree.txt" ) ), null );
167 root.acceptVisitor( new JavaOutputVisitor( new PlainTextOutput( buf ), m_settings ), null ); 166 root.acceptVisitor( new JavaOutputVisitor( new PlainTextOutput( buf ), m_settings ), null );
168 167
169 // build the source index 168 // 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
86 catch( NotFoundException ex ) 86 catch( NotFoundException ex )
87 { 87 {
88 // can't find the type? not a bridge method 88 // can't find the type? not a bridge method
89 ex.printStackTrace( System.err );
90 return null; 89 return null;
91 } 90 }
92 } 91 }
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;
21import com.strobel.decompiler.languages.java.ast.Keys; 21import com.strobel.decompiler.languages.java.ast.Keys;
22import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression; 22import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression;
23import com.strobel.decompiler.languages.java.ast.MethodDeclaration; 23import com.strobel.decompiler.languages.java.ast.MethodDeclaration;
24import com.strobel.decompiler.languages.java.ast.ObjectCreationExpression;
24import com.strobel.decompiler.languages.java.ast.ParameterDeclaration; 25import com.strobel.decompiler.languages.java.ast.ParameterDeclaration;
25import com.strobel.decompiler.languages.java.ast.SimpleType; 26import com.strobel.decompiler.languages.java.ast.SimpleType;
26 27
27import cuchaz.enigma.mapping.ArgumentEntry; 28import cuchaz.enigma.mapping.ArgumentEntry;
28import cuchaz.enigma.mapping.BehaviorEntry; 29import cuchaz.enigma.mapping.BehaviorEntry;
29import cuchaz.enigma.mapping.ClassEntry; 30import cuchaz.enigma.mapping.ClassEntry;
31import cuchaz.enigma.mapping.ConstructorEntry;
30import cuchaz.enigma.mapping.Entry; 32import cuchaz.enigma.mapping.Entry;
31import cuchaz.enigma.mapping.FieldEntry; 33import cuchaz.enigma.mapping.FieldEntry;
32import cuchaz.enigma.mapping.MethodEntry; 34import cuchaz.enigma.mapping.MethodEntry;
@@ -57,9 +59,9 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor
57 { 59 {
58 MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE ); 60 MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE );
59 ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() ); 61 ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() );
60 MethodEntry methodEntry = new MethodEntry( classEntry, ref.getName(), ref.getSignature() );
61 if( node.getTarget() instanceof MemberReferenceExpression ) 62 if( node.getTarget() instanceof MemberReferenceExpression )
62 { 63 {
64 MethodEntry methodEntry = new MethodEntry( classEntry, ref.getName(), ref.getSignature() );
63 index.addReference( 65 index.addReference(
64 ((MemberReferenceExpression)node.getTarget()).getMemberNameToken(), 66 ((MemberReferenceExpression)node.getTarget()).getMemberNameToken(),
65 new EntryReference<Entry,Entry>( methodEntry, m_behaviorEntry ) 67 new EntryReference<Entry,Entry>( methodEntry, m_behaviorEntry )
@@ -131,4 +133,21 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor
131 133
132 return recurse( node, index ); 134 return recurse( node, index );
133 } 135 }
136
137 @Override
138 public Void visitObjectCreationExpression( ObjectCreationExpression node, SourceIndex index )
139 {
140 MemberReference ref = node.getUserData( Keys.MEMBER_REFERENCE );
141 ClassEntry classEntry = new ClassEntry( ref.getDeclaringType().getInternalName() );
142 ConstructorEntry constructorEntry = new ConstructorEntry( classEntry, ref.getSignature() );
143 if( node.getType() instanceof SimpleType )
144 {
145 index.addReference(
146 ((SimpleType)node.getType()).getIdentifierToken(),
147 new EntryReference<Entry,Entry>( constructorEntry, m_behaviorEntry )
148 );
149 }
150
151 return recurse( node, index );
152 }
134} 153}
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
479 } 479 }
480 } ); 480 } );
481 m_tokens.setPreferredSize( new Dimension( 0, 200 ) ); 481 m_tokens.setPreferredSize( new Dimension( 0, 200 ) );
482 m_tokens.setMinimumSize( new Dimension( 0, 200 ) );
482 JSplitPane callPanel = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, new JScrollPane( m_callsTree ), new JScrollPane( m_tokens ) ); 483 JSplitPane callPanel = new JSplitPane( JSplitPane.VERTICAL_SPLIT, true, new JScrollPane( m_callsTree ), new JScrollPane( m_tokens ) );
483 callPanel.setResizeWeight( 1 ); // let the top side take all the slack 484 callPanel.setResizeWeight( 1 ); // let the top side take all the slack
484 callPanel.resetToPreferredSizes(); 485 callPanel.resetToPreferredSizes();
@@ -775,6 +776,10 @@ public class Gui
775 m_tokens.setListData( sortedTokens ); 776 m_tokens.setListData( sortedTokens );
776 m_tokens.setSelectedIndex( 0 ); 777 m_tokens.setSelectedIndex( 0 );
777 } 778 }
779 else
780 {
781 m_tokens.setListData( new Vector<Token>() );
782 }
778 783
779 // show the first token 784 // show the first token
780 showToken( sortedTokens.get( 0 ) ); 785 showToken( sortedTokens.get( 0 ) );