diff options
| author | 2014-08-22 00:37:31 -0400 | |
|---|---|---|
| committer | 2014-08-22 00:37:31 -0400 | |
| commit | 79e8b7ea7ed27d65582d1c399a78e540d0f42895 (patch) | |
| tree | 1e1df66076275f19ad2fbe85ee548b12f97f5798 /src | |
| parent | fixed call graph searching (diff) | |
| download | enigma-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.java | 3 | ||||
| -rw-r--r-- | src/cuchaz/enigma/analysis/BridgeFixer.java | 1 | ||||
| -rw-r--r-- | src/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java | 21 | ||||
| -rw-r--r-- | 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; | |||
| 30 | import cuchaz.enigma.analysis.JarIndex; | 30 | import cuchaz.enigma.analysis.JarIndex; |
| 31 | import cuchaz.enigma.analysis.SourceIndex; | 31 | import cuchaz.enigma.analysis.SourceIndex; |
| 32 | import cuchaz.enigma.analysis.SourceIndexVisitor; | 32 | import cuchaz.enigma.analysis.SourceIndexVisitor; |
| 33 | import cuchaz.enigma.analysis.TreeDumpVisitor; | ||
| 34 | import cuchaz.enigma.mapping.ArgumentEntry; | 33 | import cuchaz.enigma.mapping.ArgumentEntry; |
| 35 | import cuchaz.enigma.mapping.ClassEntry; | 34 | import cuchaz.enigma.mapping.ClassEntry; |
| 36 | import cuchaz.enigma.mapping.ClassMapping; | 35 | import 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; | |||
| 21 | import com.strobel.decompiler.languages.java.ast.Keys; | 21 | import com.strobel.decompiler.languages.java.ast.Keys; |
| 22 | import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression; | 22 | import com.strobel.decompiler.languages.java.ast.MemberReferenceExpression; |
| 23 | import com.strobel.decompiler.languages.java.ast.MethodDeclaration; | 23 | import com.strobel.decompiler.languages.java.ast.MethodDeclaration; |
| 24 | import com.strobel.decompiler.languages.java.ast.ObjectCreationExpression; | ||
| 24 | import com.strobel.decompiler.languages.java.ast.ParameterDeclaration; | 25 | import com.strobel.decompiler.languages.java.ast.ParameterDeclaration; |
| 25 | import com.strobel.decompiler.languages.java.ast.SimpleType; | 26 | import com.strobel.decompiler.languages.java.ast.SimpleType; |
| 26 | 27 | ||
| 27 | import cuchaz.enigma.mapping.ArgumentEntry; | 28 | import cuchaz.enigma.mapping.ArgumentEntry; |
| 28 | import cuchaz.enigma.mapping.BehaviorEntry; | 29 | import cuchaz.enigma.mapping.BehaviorEntry; |
| 29 | import cuchaz.enigma.mapping.ClassEntry; | 30 | import cuchaz.enigma.mapping.ClassEntry; |
| 31 | import cuchaz.enigma.mapping.ConstructorEntry; | ||
| 30 | import cuchaz.enigma.mapping.Entry; | 32 | import cuchaz.enigma.mapping.Entry; |
| 31 | import cuchaz.enigma.mapping.FieldEntry; | 33 | import cuchaz.enigma.mapping.FieldEntry; |
| 32 | import cuchaz.enigma.mapping.MethodEntry; | 34 | import 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 ) ); |