diff --git a/plugins/java/ExampleStringDecrypter.java b/plugins/java/ExampleStringDecrypter.java index e185a448..db2db6e3 100644 --- a/plugins/java/ExampleStringDecrypter.java +++ b/plugins/java/ExampleStringDecrypter.java @@ -22,23 +22,39 @@ public class ExampleStringDecrypter extends Plugin { new String[]{"Continue", "Cancel"}); if (dialog.promptChoice() == 0) { + boolean needsWarning = false; + for (ClassNode cn : classNodesList) { + + //load the class node into the classloader BCV.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")) { + + //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()) { String s = (String) f2.get(null); if (s != null && !s.isEmpty()) gui.appendText(cn + ":" + s); } - } catch (Exception ignored) { + } 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."); } gui.setVisible(true);