Skip to content

Commit c2e0f80

Browse files
committed
Add back support for old versions of deobfuscator
TODO: -Stacktraces are not being fully printed when I run the program a second time, bug? (new version) Also, the failure message for the LOGGER isn't printed when the program runs a second time -The LOGGER completely fails (new version)
1 parent 7ec9cda commit c2e0f80

File tree

1 file changed

+75
-10
lines changed

1 file changed

+75
-10
lines changed

src/io/github/thistestuser/DeobfuscatorFrame.java

Lines changed: 75 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
import java.awt.event.MouseEvent;
1212
import java.awt.event.WindowAdapter;
1313
import java.awt.event.WindowEvent;
14+
import java.io.BufferedReader;
1415
import java.io.File;
1516
import java.io.FileInputStream;
1617
import java.io.IOException;
18+
import java.io.InputStreamReader;
1719
import java.io.OutputStream;
1820
import java.io.PrintStream;
1921
import java.net.URL;
@@ -51,6 +53,7 @@ public class DeobfuscatorFrame
5153
private DefaultListModel<String> librariesList;
5254
private File libraryPath;
5355
private Thread thread;
56+
private Process process;
5457

5558
/**
5659
* The singleton instance of URLClassLoader
@@ -63,7 +66,6 @@ public class DeobfuscatorFrame
6366
private List<Class<?>> transformerClasses = new ArrayList<>();
6467

6568
/**
66-
* If it is legacy mode, has Deobfuscator.class and Transformer.class
6769
* If its new mode, has Deobfuscator.class, Configuration.class, TransformerConfigDeserializer.class, and Transformer.class
6870
*/
6971
private Class<?>[] loadClasses;
@@ -594,10 +596,80 @@ public void run()
594596
{
595597
e.printStackTrace(print);
596598
}
597-
598599
}else
599600
{
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+
});
601673
}
602674
}
603675
});
@@ -665,13 +737,6 @@ private void loadTransformers(String path, JLabel displayLabel)
665737
DEOBFUSCATOR_VERSION = DeobfuscatorVersion.NEW;
666738
}
667739
}
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-
}
675740
zip.close();
676741
displayLabel.setText("Successfully loaded transformers!");
677742
displayLabel.setForeground(Color.GREEN);

0 commit comments

Comments
 (0)