11
11
import java .awt .event .MouseEvent ;
12
12
import java .awt .event .WindowAdapter ;
13
13
import java .awt .event .WindowEvent ;
14
+ import java .io .BufferedReader ;
14
15
import java .io .File ;
15
16
import java .io .FileInputStream ;
16
17
import java .io .IOException ;
18
+ import java .io .InputStreamReader ;
17
19
import java .io .OutputStream ;
18
20
import java .io .PrintStream ;
19
21
import java .net .URL ;
@@ -51,6 +53,7 @@ public class DeobfuscatorFrame
51
53
private DefaultListModel <String > librariesList ;
52
54
private File libraryPath ;
53
55
private Thread thread ;
56
+ private Process process ;
54
57
55
58
/**
56
59
* The singleton instance of URLClassLoader
@@ -63,7 +66,6 @@ public class DeobfuscatorFrame
63
66
private List <Class <?>> transformerClasses = new ArrayList <>();
64
67
65
68
/**
66
- * If it is legacy mode, has Deobfuscator.class and Transformer.class
67
69
* If its new mode, has Deobfuscator.class, Configuration.class, TransformerConfigDeserializer.class, and Transformer.class
68
70
*/
69
71
private Class <?>[] loadClasses ;
@@ -594,10 +596,80 @@ public void run()
594
596
{
595
597
e .printStackTrace (print );
596
598
}
597
-
598
599
}else
599
600
{
600
-
601
+ btnRun .setEnabled (false );
602
+ // Converts the above into args
603
+ List <String > command = new ArrayList <>();
604
+ command .add ("java" );
605
+ command .add ("-jar" );
606
+ command .add (deobfuscatorField .getText ());
607
+ command .add ("-input" );
608
+ command .add (inputField .getText ());
609
+ command .add ("-output" );
610
+ command .add (outputField .getText ());
611
+ for (int i = 0 ; i < selectedTransformers .getSize (); i ++)
612
+ {
613
+ command .add ("-transformer" );
614
+ command .add (selectedTransformers .get (i ));
615
+ }
616
+ for (int i = 0 ; i < librariesList .getSize (); i ++)
617
+ {
618
+ command .add ("-path" );
619
+ command .add (librariesList .get (i ));
620
+ }
621
+ // Start
622
+ ProcessBuilder builder = new ProcessBuilder (command );
623
+ JFrame newFrame = new JFrame ();
624
+ newFrame .setTitle ("Console" );
625
+ JTextArea area = new JTextArea ();
626
+ area .setEditable (false );
627
+ newFrame .getContentPane ().add (new JScrollPane (area ));
628
+ newFrame .pack ();
629
+ newFrame .setSize (800 , 600 );
630
+ newFrame .setVisible (true );
631
+ SwingWorker <Void , String > worker = new SwingWorker <Void , String >()
632
+ {
633
+ @ Override
634
+ protected Void doInBackground () throws Exception
635
+ {
636
+ builder .redirectErrorStream (true );
637
+ Process process = builder .start ();
638
+ DeobfuscatorFrame .this .process = process ;
639
+ BufferedReader reader = new BufferedReader (
640
+ new InputStreamReader (process .getInputStream ()));
641
+ String line ;
642
+ while ((line = reader .readLine ()) != null )
643
+ publish (line );
644
+ return null ;
645
+ }
646
+
647
+ @ Override
648
+ protected void process (List <String > chunks )
649
+ {
650
+ for (String line : chunks )
651
+ {
652
+ area .append (line );
653
+ area .append ("\n " );
654
+ }
655
+ }
656
+ };
657
+ worker .execute ();
658
+ newFrame .addWindowListener (new WindowAdapter ()
659
+ {
660
+ @ Override
661
+ public void windowClosing (WindowEvent e )
662
+ {
663
+ btnRun .setEnabled (true );
664
+ worker .cancel (true );
665
+ if (process != null )
666
+ {
667
+ process .destroyForcibly ();
668
+ process = null ;
669
+ }
670
+ e .getWindow ().dispose ();
671
+ }
672
+ });
601
673
}
602
674
}
603
675
});
@@ -665,13 +737,6 @@ private void loadTransformers(String path, JLabel displayLabel)
665
737
DEOBFUSCATOR_VERSION = DeobfuscatorVersion .NEW ;
666
738
}
667
739
}
668
- if (DEOBFUSCATOR_VERSION == DeobfuscatorVersion .LEGACY )
669
- {
670
- loadClasses = new Class <?>[2 ];
671
- loadClasses [0 ] = new URLClassLoader (new URL []{new URL (path )}).
672
- loadClass ("com.javadeobfuscator.deobfuscator.Deobfuscator" );
673
- loadClasses [1 ] = loader .loadClass ("com.javadeobfuscator.deobfuscator.transformers.Transformer" );
674
- }
675
740
zip .close ();
676
741
displayLabel .setText ("Successfully loaded transformers!" );
677
742
displayLabel .setForeground (Color .GREEN );
0 commit comments