summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/gui/GuiController.java
diff options
context:
space:
mode:
authorGravatar jeff2014-08-10 01:03:40 -0400
committerGravatar jeff2014-08-10 01:03:40 -0400
commitd24d2b9ad9b5c895020b56f700a72906346482e5 (patch)
treeda360c07209e6e327325db53dbb4df05e77cb7e9 /src/cuchaz/enigma/gui/GuiController.java
parentadded sorting for deobfuscated classes (diff)
downloadenigma-fork-d24d2b9ad9b5c895020b56f700a72906346482e5.tar.gz
enigma-fork-d24d2b9ad9b5c895020b56f700a72906346482e5.tar.xz
enigma-fork-d24d2b9ad9b5c895020b56f700a72906346482e5.zip
completely re-wrote token recognizer to bootstrap from Procyon's AST
changed imports to guava instead of whatever collections library happened to be on my classpath
Diffstat (limited to 'src/cuchaz/enigma/gui/GuiController.java')
-rw-r--r--src/cuchaz/enigma/gui/GuiController.java56
1 files changed, 23 insertions, 33 deletions
diff --git a/src/cuchaz/enigma/gui/GuiController.java b/src/cuchaz/enigma/gui/GuiController.java
index 2219e05..e0aad86 100644
--- a/src/cuchaz/enigma/gui/GuiController.java
+++ b/src/cuchaz/enigma/gui/GuiController.java
@@ -17,15 +17,13 @@ import java.io.IOException;
17import java.util.List; 17import java.util.List;
18import java.util.Map; 18import java.util.Map;
19 19
20import jsyntaxpane.Token; 20import com.google.common.collect.Lists;
21 21import com.google.common.collect.Maps;
22import com.beust.jcommander.internal.Lists;
23import com.beust.jcommander.internal.Maps;
24 22
25import cuchaz.enigma.ClassFile; 23import cuchaz.enigma.ClassFile;
26import cuchaz.enigma.Deobfuscator; 24import cuchaz.enigma.Deobfuscator;
27import cuchaz.enigma.analysis.Analyzer;
28import cuchaz.enigma.analysis.SourceIndex; 25import cuchaz.enigma.analysis.SourceIndex;
26import cuchaz.enigma.analysis.Token;
29import cuchaz.enigma.mapping.ClassEntry; 27import cuchaz.enigma.mapping.ClassEntry;
30import cuchaz.enigma.mapping.Entry; 28import cuchaz.enigma.mapping.Entry;
31import cuchaz.enigma.mapping.EntryPair; 29import cuchaz.enigma.mapping.EntryPair;
@@ -105,41 +103,35 @@ public class GuiController
105 deobfuscate( m_currentFile ); 103 deobfuscate( m_currentFile );
106 } 104 }
107 105
108 public EntryPair<Entry> getEntryPair( int pos ) 106 public Token getToken( int pos )
109 { 107 {
110 if( m_index == null ) 108 if( m_index == null )
111 { 109 {
112 return null; 110 return null;
113 } 111 }
114 112
115 Map.Entry<Entry,Token> deobfEntryAndToken = m_index.getEntry( pos ); 113 return m_index.getToken( pos );
116 if( deobfEntryAndToken == null ) 114 }
115
116 public EntryPair<Entry> getEntryPair( Token token )
117 {
118 if( m_index == null )
117 { 119 {
118 return null; 120 return null;
119 } 121 }
120 Entry deobfEntry = deobfEntryAndToken.getKey(); 122
121 Token token = deobfEntryAndToken.getValue(); 123 Entry deobfEntry = m_index.getEntry( token );
122 return new EntryPair<Entry>( m_deobfuscator.obfuscateEntry( deobfEntry ), deobfEntry, token ); 124 return new EntryPair<Entry>( m_deobfuscator.obfuscateEntry( deobfEntry ), deobfEntry );
123 } 125 }
124 126
125 public boolean entryHasMapping( int pos ) 127 public boolean entryHasMapping( Entry deobfEntry )
126 { 128 {
127 EntryPair<Entry> pair = getEntryPair( pos ); 129 return m_deobfuscator.hasMapping( m_deobfuscator.obfuscateEntry( deobfEntry ) );
128 if( pair == null || pair.obf == null )
129 {
130 return false;
131 }
132 return m_deobfuscator.hasMapping( pair.obf );
133 } 130 }
134 131
135 public boolean entryIsObfuscatedIdenfitier( int pos ) 132 public boolean entryIsObfuscatedIdenfitier( Entry deobfEntry )
136 { 133 {
137 EntryPair<Entry> pair = getEntryPair( pos ); 134 return m_deobfuscator.entryIsObfuscatedIdenfitier( m_deobfuscator.obfuscateEntry( deobfEntry ) );
138 if( pair == null || pair.obf == null )
139 {
140 return false;
141 }
142 return m_deobfuscator.entryIsObfuscatedIdenfitier( pair.obf );
143 } 135 }
144 136
145 public ClassInheritanceTreeNode getClassInheritance( ClassEntry classEntry ) 137 public ClassInheritanceTreeNode getClassInheritance( ClassEntry classEntry )
@@ -210,23 +202,21 @@ public class GuiController
210 @Override 202 @Override
211 public void run( ) 203 public void run( )
212 { 204 {
213 // deobfuscate,decompile the bytecode 205 // decopmile,deobfuscate the bytecode
214 String source = m_deobfuscator.getSource( classFile ); 206 m_index = m_deobfuscator.getSource( classFile );
215 m_gui.setSource( source, lineNum ); 207 m_gui.setSource( m_index.getSource(), lineNum );
216
217 // index the source file
218 m_index = Analyzer.analyze( classFile.getName(), source );
219 208
220 // set the highlighted tokens 209 // set the highlighted tokens
221 List<Token> obfuscatedTokens = Lists.newArrayList(); 210 List<Token> obfuscatedTokens = Lists.newArrayList();
222 List<Token> deobfuscatedTokens = Lists.newArrayList(); 211 List<Token> deobfuscatedTokens = Lists.newArrayList();
223 for( Token token : m_index.tokens() ) 212 for( Token token : m_index.tokens() )
224 { 213 {
225 if( entryHasMapping( token.start ) ) 214 Entry entry = m_index.getEntry( token );
215 if( entryHasMapping( entry ) )
226 { 216 {
227 deobfuscatedTokens.add( token ); 217 deobfuscatedTokens.add( token );
228 } 218 }
229 else if( entryIsObfuscatedIdenfitier( token.start ) ) 219 else if( entryIsObfuscatedIdenfitier( entry ) )
230 { 220 {
231 obfuscatedTokens.add( token ); 221 obfuscatedTokens.add( token );
232 } 222 }