diff options
| author | 2014-08-17 10:56:17 -0400 | |
|---|---|---|
| committer | 2014-08-17 10:56:17 -0400 | |
| commit | 6c4440ac1133bfaa7871d1049d174528a289ef30 (patch) | |
| tree | fe1142b285c5e43dbd3afe8dd3eb0189f027c6a6 /src/cuchaz/enigma/analysis/TreeDumpVisitor.java | |
| parent | trying to get inner/anonymous classes working... I have a working heuristic i... (diff) | |
| download | enigma-fork-6c4440ac1133bfaa7871d1049d174528a289ef30.tar.gz enigma-fork-6c4440ac1133bfaa7871d1049d174528a289ef30.tar.xz enigma-fork-6c4440ac1133bfaa7871d1049d174528a289ef30.zip | |
added support for automatic reconstruction of inner and anonymous classes
also added class to restore bridge method flags taken out by the obfuscator
Diffstat (limited to 'src/cuchaz/enigma/analysis/TreeDumpVisitor.java')
| -rw-r--r-- | src/cuchaz/enigma/analysis/TreeDumpVisitor.java | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/src/cuchaz/enigma/analysis/TreeDumpVisitor.java b/src/cuchaz/enigma/analysis/TreeDumpVisitor.java index 05d0e6b..ac3e92d 100644 --- a/src/cuchaz/enigma/analysis/TreeDumpVisitor.java +++ b/src/cuchaz/enigma/analysis/TreeDumpVisitor.java | |||
| @@ -10,6 +10,11 @@ | |||
| 10 | ******************************************************************************/ | 10 | ******************************************************************************/ |
| 11 | package cuchaz.enigma.analysis; | 11 | package cuchaz.enigma.analysis; |
| 12 | 12 | ||
| 13 | import java.io.File; | ||
| 14 | import java.io.FileWriter; | ||
| 15 | import java.io.IOException; | ||
| 16 | import java.io.Writer; | ||
| 17 | |||
| 13 | import com.strobel.componentmodel.Key; | 18 | import com.strobel.componentmodel.Key; |
| 14 | import com.strobel.decompiler.languages.java.ast.Annotation; | 19 | import com.strobel.decompiler.languages.java.ast.Annotation; |
| 15 | import com.strobel.decompiler.languages.java.ast.AnonymousObjectCreationExpression; | 20 | import com.strobel.decompiler.languages.java.ast.AnonymousObjectCreationExpression; |
| @@ -87,10 +92,42 @@ import com.strobel.decompiler.patterns.Pattern; | |||
| 87 | 92 | ||
| 88 | public class TreeDumpVisitor implements IAstVisitor<Void, Void> | 93 | public class TreeDumpVisitor implements IAstVisitor<Void, Void> |
| 89 | { | 94 | { |
| 95 | private File m_file; | ||
| 96 | private Writer m_out; | ||
| 97 | |||
| 98 | public TreeDumpVisitor( File file ) | ||
| 99 | { | ||
| 100 | m_file = file; | ||
| 101 | m_out = null; | ||
| 102 | } | ||
| 103 | |||
| 104 | @Override | ||
| 105 | public Void visitCompilationUnit( CompilationUnit node, Void ignored ) | ||
| 106 | { | ||
| 107 | try | ||
| 108 | { | ||
| 109 | m_out = new FileWriter( m_file ); | ||
| 110 | recurse( node, ignored ); | ||
| 111 | m_out.close(); | ||
| 112 | return null; | ||
| 113 | } | ||
| 114 | catch( IOException ex ) | ||
| 115 | { | ||
| 116 | throw new Error( ex ); | ||
| 117 | } | ||
| 118 | } | ||
| 119 | |||
| 90 | private Void recurse( AstNode node, Void ignored ) | 120 | private Void recurse( AstNode node, Void ignored ) |
| 91 | { | 121 | { |
| 92 | // show the tree | 122 | // show the tree |
| 93 | System.out.println( getIndent( node ) + node.getClass().getSimpleName() + dumpUserData( node ) + " " + node.getRegion() ); | 123 | try |
| 124 | { | ||
| 125 | m_out.write( getIndent( node ) + node.getClass().getSimpleName() + dumpUserData( node ) + " " + node.getRegion() + "\n" ); | ||
| 126 | } | ||
| 127 | catch( IOException ex ) | ||
| 128 | { | ||
| 129 | throw new Error( ex ); | ||
| 130 | } | ||
| 94 | 131 | ||
| 95 | // recurse | 132 | // recurse |
| 96 | for( final AstNode child : node.getChildren() ) | 133 | for( final AstNode child : node.getChildren() ) |
| @@ -379,12 +416,6 @@ public class TreeDumpVisitor implements IAstVisitor<Void, Void> | |||
| 379 | } | 416 | } |
| 380 | 417 | ||
| 381 | @Override | 418 | @Override |
| 382 | public Void visitCompilationUnit( CompilationUnit node, Void ignored ) | ||
| 383 | { | ||
| 384 | return recurse( node, ignored ); | ||
| 385 | } | ||
| 386 | |||
| 387 | @Override | ||
| 388 | public Void visitPackageDeclaration( PackageDeclaration node, Void ignored ) | 419 | public Void visitPackageDeclaration( PackageDeclaration node, Void ignored ) |
| 389 | { | 420 | { |
| 390 | return recurse( node, ignored ); | 421 | return recurse( node, ignored ); |