Skip to content

Commit 0bf233d

Browse files
committed
Finish
1 parent 9cd6e98 commit 0bf233d

File tree

3 files changed

+154
-23
lines changed

3 files changed

+154
-23
lines changed

src/java/com/javadeobfuscator/deobfuscator/ui/SwingWindow.java

Lines changed: 148 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
import java.io.File;
44
import java.io.IOException;
5+
import java.io.OutputStream;
6+
import java.io.PrintStream;
7+
import java.io.PrintWriter;
8+
import java.io.StringWriter;
9+
import java.lang.reflect.InvocationTargetException;
510
import java.util.ArrayList;
611
import java.util.Arrays;
712
import java.util.HashMap;
@@ -23,17 +28,13 @@
2328
import com.javadeobfuscator.deobfuscator.ui.wrap.Deobfuscator;
2429
import com.javadeobfuscator.deobfuscator.ui.wrap.Transformers;
2530
import com.javadeobfuscator.deobfuscator.ui.wrap.WrapperFactory;
31+
2632
import java.awt.GridBagLayout;
2733
import java.awt.GridBagConstraints;
2834
import java.awt.Insets;
2935
import java.awt.Toolkit;
3036
import java.awt.datatransfer.StringSelection;
31-
import java.awt.event.ActionEvent;
32-
import java.awt.event.ActionListener;
33-
import java.awt.event.KeyEvent;
34-
import java.awt.event.KeyListener;
35-
import java.awt.event.MouseAdapter;
36-
import java.awt.event.MouseEvent;
37+
import java.awt.event.*;
3738

3839
public class SwingWindow
3940
{
@@ -755,8 +756,132 @@ public void actionPerformed(ActionEvent e)
755756
gbl_run.ipadx = 15;
756757
gbl_run.insets = new Insets(0, 10, 20, 20);
757758
JButton run = new JButton("Run");
758-
frame.getContentPane().add(run, gbl_run);
759759

760+
JTextArea area = new JTextArea();
761+
PrintStream print = new PrintStream(new DeobfuscatorOutputStream(area));
762+
System.setErr(print);
763+
System.setOut(print);
764+
deob.hookLogging(print);
765+
766+
run.addActionListener(new ActionListener()
767+
{
768+
@Override
769+
public void actionPerformed(ActionEvent e)
770+
{
771+
run.setEnabled(false);
772+
// Start
773+
area.setText(null);
774+
JFrame newFrame = new JFrame();
775+
newFrame.setTitle("Console");
776+
area.setEditable(false);
777+
newFrame.getContentPane().add(new JScrollPane(area));
778+
newFrame.pack();
779+
newFrame.setSize(800, 600);
780+
newFrame.setVisible(true);
781+
Thread thread = new Thread(new Runnable()
782+
{
783+
@Override
784+
public void run()
785+
{
786+
try
787+
{
788+
if(true)throw new RuntimeException("TESTING");
789+
//Set fields
790+
for(ConfigItem item : fields)
791+
{
792+
item.clearFieldValue();
793+
item.setFieldValue();
794+
}
795+
List<Class<?>> transformerClasses = new ArrayList<>();
796+
for(Object o : transformerSelected.toArray())
797+
{
798+
String str = (String)o;
799+
transformerClasses.add(NAME_TO_TRANSFORMER.get(str));
800+
}
801+
deob.getConfig().setTransformers(trans, transformerClasses);
802+
try
803+
{
804+
deob.run();
805+
}catch(InvocationTargetException e)
806+
{
807+
if(e.getTargetException().getClass().getName().
808+
equals("com.javadeobfuscator.deobfuscator.exceptions.NoClassInPathException"))
809+
{
810+
for(int i = 0; i < 5; i++)
811+
System.out.println();
812+
System.out.println("** DO NOT OPEN AN ISSUE ON GITHUB **");
813+
System.out.println("Could not locate a class file.");
814+
System.out.println("Have you added the necessary files to the -libraries argument?");
815+
System.out.println("The error was:");
816+
}else if(e.getTargetException().getClass().getName().
817+
equals("com.javadeobfuscator.deobfuscator.exceptions.PreventableStackOverflowError"))
818+
{
819+
for(int i = 0; i < 5; i++)
820+
System.out.println();
821+
System.out.println("** DO NOT OPEN AN ISSUE ON GITHUB **");
822+
System.out.println("A StackOverflowError occurred during deobfuscation, but it is preventable");
823+
System.out.println("Try increasing your stack size using the -Xss flag");
824+
System.out.println("The error was:");
825+
}else
826+
{
827+
for(int i = 0; i < 5; i++)
828+
System.out.println();
829+
System.out.println("Deobfuscation failed. Please open a ticket on GitHub and provide the following error:");
830+
}
831+
e.getTargetException().printStackTrace();
832+
}
833+
}catch(Throwable e)
834+
{
835+
JFrame newFrame = new JFrame();
836+
newFrame.setTitle("Error");
837+
newFrame.setBounds(100, 100, 500, 400);
838+
newFrame.setResizable(true);
839+
newFrame.getContentPane().setLayout(new GridBagLayout());
840+
841+
JLabel yourConfiguration = new JLabel("An error occured while running deobfuscator.");
842+
GridBagConstraints gbc_yourConfiguration = new GridBagConstraints();
843+
gbc_yourConfiguration.anchor = GridBagConstraints.PAGE_START;
844+
gbc_yourConfiguration.insets = new Insets(15, 5, 5, 5);
845+
gbc_yourConfiguration.gridx = 0;
846+
gbc_yourConfiguration.gridy = 0;
847+
newFrame.getContentPane().add(yourConfiguration, gbc_yourConfiguration);
848+
849+
JScrollPane scrollPane = new JScrollPane();
850+
JTextPane textPane = new JTextPane();
851+
textPane.setEditable(false);
852+
scrollPane.setViewportView(textPane);
853+
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
854+
gbc_scrollPane.insets = new Insets(2, 10, 5, 10);
855+
gbc_scrollPane.gridx = 0;
856+
gbc_scrollPane.gridy = 1;
857+
gbc_scrollPane.weightx = 1;
858+
gbc_scrollPane.weighty = 1;
859+
gbc_scrollPane.fill = GridBagConstraints.BOTH;
860+
newFrame.getContentPane().add(scrollPane, gbc_scrollPane);
861+
StringWriter stringWriter = new StringWriter();
862+
PrintWriter writer = new PrintWriter(stringWriter);
863+
e.printStackTrace(writer);
864+
textPane.setText(stringWriter.toString());
865+
newFrame.setVisible(true);
866+
}
867+
}
868+
});
869+
thread.start();
870+
newFrame.addWindowListener(new WindowAdapter()
871+
{
872+
@Override
873+
public void windowClosing(WindowEvent e)
874+
{
875+
run.setEnabled(true);
876+
if(thread.isAlive())
877+
thread.stop();
878+
e.getWindow().dispose();
879+
}
880+
});
881+
}
882+
});
883+
884+
frame.getContentPane().add(run, gbl_run);
760885
frame.setVisible(true);
761886
}
762887

@@ -815,4 +940,20 @@ private static void fallbackLoad(String path)
815940
fallbackLoad(e.path);
816941
}
817942
}
943+
944+
private static class DeobfuscatorOutputStream extends OutputStream
945+
{
946+
private JTextArea console;
947+
948+
public DeobfuscatorOutputStream(JTextArea console)
949+
{
950+
this.console = console;
951+
}
952+
953+
@Override
954+
public void write(int b) throws IOException
955+
{
956+
console.append(String.valueOf((char)b));
957+
}
958+
}
818959
}

src/java/com/javadeobfuscator/deobfuscator/ui/wrap/Config.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,11 @@ public Object get() {
2626
* @param trans
2727
* @param classes
2828
*/
29-
public void setTransformers(Transformers trans, List<Class<?>> classes) {
29+
public void setTransformers(Transformers trans, List<Class<?>> classes) throws Exception {
3030
List<Object> transformerConfigs = new ArrayList<>();
3131
for (Class<?> clazz : classes) {
3232
transformerConfigs.add(trans.getConfigFor(clazz));
3333
}
34-
try {
35-
Reflect.setFieldO(instance, "transformers", transformerConfigs);
36-
} catch (Exception e) {
37-
//TODO FxWindow.fatalSwing("Config error", "Failed to set transformers list from selected values.");
38-
}
34+
Reflect.setFieldO(instance, "transformers", transformerConfigs);
3935
}
4036
}

src/java/com/javadeobfuscator/deobfuscator/ui/wrap/Transformers.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.util.Collections;
77
import java.util.List;
88

9-
import com.javadeobfuscator.deobfuscator.ui.FxWindow;
109
import com.javadeobfuscator.deobfuscator.ui.util.ByteLoader;
1110
import com.javadeobfuscator.deobfuscator.ui.util.FallbackException;
1211

@@ -62,15 +61,10 @@ public List<Class<?>> getTransformers() throws FallbackException {
6261
* Transformer class
6362
* @return Config instance for transformer class.
6463
*/
65-
public Object getConfigFor(Class<?> transClass) {
66-
try {
67-
Class<?> confLoader = loader.findClass("com.javadeobfuscator.deobfuscator.config.TransformerConfig");
68-
Method configFor = confLoader.getDeclaredMethod("configFor", Class.class);
69-
return configFor.invoke(null, transClass);
70-
} catch (Exception e) {
71-
//TODO FxWindow.fatalSwing("Loading problem", "Failed to load TransformerConfig from Transformer class"); Only stop deobfuscator run
72-
}
73-
return null;
64+
public Object getConfigFor(Class<?> transClass) throws Exception {
65+
Class<?> confLoader = loader.findClass("com.javadeobfuscator.deobfuscator.config.TransformerConfig");
66+
Method configFor = confLoader.getDeclaredMethod("configFor", Class.class);
67+
return configFor.invoke(null, transClass);
7468
}
7569

7670
}

0 commit comments

Comments
 (0)