diff --git a/plugins/example/ExampleStringDecrypter.java b/plugins/example/ExampleStringDecrypter.java new file mode 100644 index 00000000..2c260f01 --- /dev/null +++ b/plugins/example/ExampleStringDecrypter.java @@ -0,0 +1,52 @@ +import the.bytecode.club.bytecodeviewer.api.* +import the.bytecode.club.bytecodeviewer.gui.components.MultipleChoiceDialogue; + +import java.util.ArrayList; +import java.lang.reflect.Field; +import org.objectweb.asm.tree.ClassNode; +import org.objectweb.asm.tree.FieldNode + +import static the.bytecode.club.bytecodeviewer.Constants.nl; + +/** + * This is an example of a string decrypter plugin + */ +public class ExampleStringDecrypter extends Plugin { + + @Override + public void execute(ArrayList classNodesList) { + PluginConsole gui = new PluginConsole("Example String Decrypter"); + + MultipleChoiceDialogue dialogue = new MultipleChoiceDialogue("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(dialogue.promptChoice() == 0) + { + for(ClassNode cn : classNodesList) + { + the.bytecode.club.bytecodeviewer.api.BytecodeViewer.getClassNodeLoader().addClass(cn); + + for(Object o : cn.fields.toArray()) + { + FieldNode f = (FieldNode) o; + if(f.name.equals("z")) {// && f.desc.equals("([Ljava/lang/String;)V")) { + try + { + for(Field f2 : the.bytecode.club.bytecodeviewer.api.BytecodeViewer.getClassNodeLoader().nodeToClass(cn).getFields()) + { + String s = f2.get(null); + if(s != null && !s.empty()) + gui.appendText(cn+":"+s); + } + } catch(Exception | StackOverflowError e) {} + } + } + + } + + gui.setVisible(true); + } + } +} \ No newline at end of file