diff options
| author | 2014-08-13 00:22:12 -0400 | |
|---|---|---|
| committer | 2014-08-13 00:22:12 -0400 | |
| commit | cc74d0e62cfdcf14c5918234f69d587d264807ed (patch) | |
| tree | 7a11bd6af9b7cd2f28c3dbd43a281b4036464f77 /src/cuchaz/enigma/gui/GuiController.java | |
| parent | got simple method call graph working! (diff) | |
| download | enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.tar.gz enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.tar.xz enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.zip | |
added support for field access searches
added proper detection/handling for constructors
Diffstat (limited to 'src/cuchaz/enigma/gui/GuiController.java')
| -rw-r--r-- | src/cuchaz/enigma/gui/GuiController.java | 38 |
1 files changed, 35 insertions, 3 deletions
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; | |||
| 21 | 21 | ||
| 22 | import cuchaz.enigma.Deobfuscator; | 22 | import cuchaz.enigma.Deobfuscator; |
| 23 | import cuchaz.enigma.analysis.ClassInheritanceTreeNode; | 23 | import cuchaz.enigma.analysis.ClassInheritanceTreeNode; |
| 24 | import cuchaz.enigma.analysis.FieldCallsTreeNode; | ||
| 24 | import cuchaz.enigma.analysis.MethodCallsTreeNode; | 25 | import cuchaz.enigma.analysis.MethodCallsTreeNode; |
| 25 | import cuchaz.enigma.analysis.MethodInheritanceTreeNode; | 26 | import cuchaz.enigma.analysis.MethodInheritanceTreeNode; |
| 26 | import cuchaz.enigma.analysis.SourceIndex; | 27 | import cuchaz.enigma.analysis.SourceIndex; |
| 27 | import cuchaz.enigma.analysis.Token; | 28 | import cuchaz.enigma.analysis.Token; |
| 28 | import cuchaz.enigma.mapping.ClassEntry; | 29 | import cuchaz.enigma.mapping.ClassEntry; |
| 30 | import cuchaz.enigma.mapping.ConstructorEntry; | ||
| 29 | import cuchaz.enigma.mapping.Entry; | 31 | import cuchaz.enigma.mapping.Entry; |
| 30 | import cuchaz.enigma.mapping.EntryPair; | 32 | import cuchaz.enigma.mapping.EntryPair; |
| 33 | import cuchaz.enigma.mapping.FieldEntry; | ||
| 31 | import cuchaz.enigma.mapping.MappingsReader; | 34 | import cuchaz.enigma.mapping.MappingsReader; |
| 32 | import cuchaz.enigma.mapping.MappingsWriter; | 35 | import cuchaz.enigma.mapping.MappingsWriter; |
| 33 | import cuchaz.enigma.mapping.MethodEntry; | 36 | import cuchaz.enigma.mapping.MethodEntry; |
| @@ -118,6 +121,10 @@ public class GuiController | |||
| 118 | } | 121 | } |
| 119 | 122 | ||
| 120 | Entry deobfEntry = m_index.getEntry( token ); | 123 | Entry deobfEntry = m_index.getEntry( token ); |
| 124 | if( deobfEntry == null ) | ||
| 125 | { | ||
| 126 | return null; | ||
| 127 | } | ||
| 121 | return new EntryPair<Entry>( m_deobfuscator.obfuscateEntry( deobfEntry ), deobfEntry ); | 128 | return new EntryPair<Entry>( m_deobfuscator.obfuscateEntry( deobfEntry ), deobfEntry ); |
| 122 | } | 129 | } |
| 123 | 130 | ||
| @@ -149,16 +156,41 @@ public class GuiController | |||
| 149 | return MethodInheritanceTreeNode.findNode( rootNode, obfMethodEntry ); | 156 | return MethodInheritanceTreeNode.findNode( rootNode, obfMethodEntry ); |
| 150 | } | 157 | } |
| 151 | 158 | ||
| 152 | public MethodCallsTreeNode getMethodCalls( MethodEntry obfMethodEntry ) | 159 | public FieldCallsTreeNode getFieldCalls( FieldEntry obfFieldEntry ) |
| 153 | { | 160 | { |
| 154 | MethodCallsTreeNode rootNode = new MethodCallsTreeNode( | 161 | FieldCallsTreeNode rootNode = new FieldCallsTreeNode( |
| 155 | m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ), | 162 | m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ), |
| 156 | obfMethodEntry | 163 | obfFieldEntry |
| 157 | ); | 164 | ); |
| 158 | rootNode.load( m_deobfuscator.getJarIndex(), true ); | 165 | rootNode.load( m_deobfuscator.getJarIndex(), true ); |
| 159 | return rootNode; | 166 | return rootNode; |
| 160 | } | 167 | } |
| 161 | 168 | ||
| 169 | public MethodCallsTreeNode getMethodCalls( Entry obfEntry ) | ||
| 170 | { | ||
| 171 | MethodCallsTreeNode rootNode; | ||
| 172 | if( obfEntry instanceof MethodEntry ) | ||
| 173 | { | ||
| 174 | rootNode = new MethodCallsTreeNode( | ||
| 175 | m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ), | ||
| 176 | (MethodEntry)obfEntry | ||
| 177 | ); | ||
| 178 | } | ||
| 179 | else if( obfEntry instanceof ConstructorEntry ) | ||
| 180 | { | ||
| 181 | rootNode = new MethodCallsTreeNode( | ||
| 182 | m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ), | ||
| 183 | (ConstructorEntry)obfEntry | ||
| 184 | ); | ||
| 185 | } | ||
| 186 | else | ||
| 187 | { | ||
| 188 | throw new IllegalArgumentException( "entry must be a MethodEntry or a ConstructorEntry!" ); | ||
| 189 | } | ||
| 190 | rootNode.load( m_deobfuscator.getJarIndex(), true ); | ||
| 191 | return rootNode; | ||
| 192 | } | ||
| 193 | |||
| 162 | public void rename( Entry obfEntry, String newName ) | 194 | public void rename( Entry obfEntry, String newName ) |
| 163 | { | 195 | { |
| 164 | m_deobfuscator.rename( obfEntry, newName ); | 196 | m_deobfuscator.rename( obfEntry, newName ); |