Eine Kombination aus BCEL und Reflexion/Aufruf könnte die Arbeit machen. Verwenden Sie BCEL, um die Namen der Klassen und Methoden zu erhalten (Ihr LDC
, invokestatic
Trick oder etwas Ähnliches), und rufen Sie die Methode danach auf. Sie können dies tun, wenn Sie Ihre "Testklassen" auf den Klassenpfad setzen. Für mich ist es nicht notwendig, Bytecode auszuführen.
Wenn Sie eine Klasse und einen Methodennamen haben, geht es wie folgt aus:
Class clazz = Class.forName(yourClassName);
// either (for public methods)
Method method = clazz.getMethod(yourMethodName);
// or for protected/private methods:
Method method = clazz.getDeclaredMethod(yourMethodName, yourArgumentTypes);
method.setAccessible(true);
// assuming the method is static
Object result = method.invoke(null, yourMethodArgs);
// otherwise: pass a object reference instead of null
// to call the method "on" that object
Was ist ein String Deobfuscator? –
Thorbjørn: Da wird es gehen und jeden LDC mit einer INVOKESTATIC danach finden (Ein Aufruf einer Methode, um die Zeichenfolge zu entschlüsseln) und entschlüsseln/ersetzen Sie die Zeichenfolge mit dem Inhalt dieser Methode AKA entblößt die Zeichenfolgen in einer Klasse – Contra