diff options
| author | 2014-08-10 01:03:40 -0400 | |
|---|---|---|
| committer | 2014-08-10 01:03:40 -0400 | |
| commit | d24d2b9ad9b5c895020b56f700a72906346482e5 (patch) | |
| tree | da360c07209e6e327325db53dbb4df05e77cb7e9 /src/cuchaz/enigma/gui/GuiController.java | |
| parent | added sorting for deobfuscated classes (diff) | |
| download | enigma-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.java | 56 |
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; | |||
| 17 | import java.util.List; | 17 | import java.util.List; |
| 18 | import java.util.Map; | 18 | import java.util.Map; |
| 19 | 19 | ||
| 20 | import jsyntaxpane.Token; | 20 | import com.google.common.collect.Lists; |
| 21 | 21 | import com.google.common.collect.Maps; | |
| 22 | import com.beust.jcommander.internal.Lists; | ||
| 23 | import com.beust.jcommander.internal.Maps; | ||
| 24 | 22 | ||
| 25 | import cuchaz.enigma.ClassFile; | 23 | import cuchaz.enigma.ClassFile; |
| 26 | import cuchaz.enigma.Deobfuscator; | 24 | import cuchaz.enigma.Deobfuscator; |
| 27 | import cuchaz.enigma.analysis.Analyzer; | ||
| 28 | import cuchaz.enigma.analysis.SourceIndex; | 25 | import cuchaz.enigma.analysis.SourceIndex; |
| 26 | import cuchaz.enigma.analysis.Token; | ||
| 29 | import cuchaz.enigma.mapping.ClassEntry; | 27 | import cuchaz.enigma.mapping.ClassEntry; |
| 30 | import cuchaz.enigma.mapping.Entry; | 28 | import cuchaz.enigma.mapping.Entry; |
| 31 | import cuchaz.enigma.mapping.EntryPair; | 29 | import 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 | } |