From 1f13c21dc055728db34fa389d7d3075acdd94d7e Mon Sep 17 00:00:00 2001 From: Konloch Date: Wed, 2 Oct 2024 21:12:58 -0600 Subject: [PATCH] External Plugin Cleanup / Fixes --- plugins/java/ExampleStringDecrypter.java | 68 ++++++++++++++---------- plugins/java/Skeleton.java | 9 ++-- plugins/java/XposedGenerator.java | 1 + 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/plugins/java/ExampleStringDecrypter.java b/plugins/java/ExampleStringDecrypter.java index cc7d3dab..8e71a3b4 100644 --- a/plugins/java/ExampleStringDecrypter.java +++ b/plugins/java/ExampleStringDecrypter.java @@ -1,68 +1,82 @@ import java.lang.reflect.Field; import java.util.List; + import org.objectweb.asm.tree.ClassNode; import org.objectweb.asm.tree.FieldNode; +import the.bytecode.club.bytecodeviewer.*; import the.bytecode.club.bytecodeviewer.api.*; import the.bytecode.club.bytecodeviewer.gui.components.MultipleChoiceDialog; -import static the.bytecode.club.bytecodeviewer.Constants.nl; +import static the.bytecode.club.bytecodeviewer.Constants.NL; /** - ** This is an example of a String Decrypter Java Plugin for BCV. - ** - ** @author [Your-Name-Goes-Here] + * * This is an example of a String Decrypter Java Plugin for BCV. + * * + * * @author [Your-Name-Goes-Here] **/ -public class ExampleStringDecrypter extends Plugin { +public class ExampleStringDecrypter extends Plugin +{ @Override - public void execute(List classNodesList) { + public void execute(List classNodesList) + { PluginConsole gui = new PluginConsole("Example String Decrypter Java Edition"); - MultipleChoiceDialog dialog = new MultipleChoiceDialog("Bytecode Viewer - WARNING", - "WARNING: This will load the classes into the JVM and execute the initialize function" - + nl + "for each class. IF THE FILE YOU'RE LOADING IS MALICIOUS, DO NOT CONTINUE.", - new String[]{"Continue", "Cancel"}); + MultipleChoiceDialog dialog = new MultipleChoiceDialog("Bytecode Viewer - WARNING", "WARNING: This will load the classes into the JVM and execute the initialize function" + NL + + "for each class. IF THE FILE YOU'RE LOADING IS MALICIOUS, DO NOT CONTINUE.", new String[]{"Continue", "Cancel"}); - if (dialog.promptChoice() == 0) { + if (dialog.promptChoice() == 0) + { boolean needsWarning = false; - - for (ClassNode cn : classNodesList) { - try { + + for (ClassNode cn : classNodesList) + { + try + { //load the class node into the classloader BCV.getClassNodeLoader().addClass(cn); - - for (Object o : cn.fields.toArray()) { + + for (Object o : cn.fields.toArray()) + { FieldNode f = (FieldNode) o; - + //if the class contains the field z, get the class object from the class node //then print out the value of the fields inside the class //if the strings get decrypted on init, this allows you to dump the current values - - if (f.name.equals("z")) { - try { - for (Field f2 : BCV.getClassNodeLoader().nodeToClass(cn).getFields()) { + if (f.name.equals("z")) + { + try + { + for (Field f2 : BCV.getClassNodeLoader().nodeToClass(cn).getFields()) + { String s = (String) f2.get(null); if (s != null && !s.isEmpty()) gui.appendText(cn + ":" + s); } - } catch (Exception ignored) { + } + catch (Exception ignored) + { } } } - } catch (Exception e) { + } + catch (Exception e) + { gui.appendText("Failed loading class " + cn.name); e.printStackTrace(); needsWarning = true; } } - - if (needsWarning) { - BytecodeViewer.showMessage("Some classes failed to decrypt, if you'd like to decrypt all of them\n" - + "makes sure you include ALL the libraries it requires."); + + if (needsWarning) + { + BytecodeViewer.showMessage("Some classes failed to decrypt, if you'd like to decrypt all of them" + NL + + "makes sure you include ALL the libraries it requires."); } gui.setVisible(true); } } + } diff --git a/plugins/java/Skeleton.java b/plugins/java/Skeleton.java index 4177905b..32444410 100644 --- a/plugins/java/Skeleton.java +++ b/plugins/java/Skeleton.java @@ -8,12 +8,15 @@ import the.bytecode.club.bytecodeviewer.api.*; ** @author [Your Name Goes Here] **/ -public class Skeleton extends Plugin { +public class Skeleton extends Plugin +{ @Override - public void execute(List classNodesList) { + public void execute(List classNodesList) + { PluginConsole gui = new PluginConsole("Skeleton Title"); gui.setVisible(true); gui.appendText("executed skeleton example"); } -} \ No newline at end of file + +} diff --git a/plugins/java/XposedGenerator.java b/plugins/java/XposedGenerator.java index 38051ddc..70c44eed 100644 --- a/plugins/java/XposedGenerator.java +++ b/plugins/java/XposedGenerator.java @@ -327,4 +327,5 @@ public class XposedGenerator extends Plugin String QUOTE = "'"; return QUOTE + aText + QUOTE; } + }