Une combinaison de BCEL et de réflexion/appel pourrait faire le travail. Utilisez BCEL pour obtenir les noms des classes et des méthodes (votre tour LDC
, invokestatic
ou quelque chose de similaire) et invoquez la méthode juste après. Vous pouvez le faire si vous mettez vos "classes de test" sur le chemin de classe. Pour moi, il n'y a pas besoin d'exécuter du code octet.
Si vous avez une classe et un nom de méthode, il va comme ceci:
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
Qu'est-ce qu'un DeObfuscator string? –
Thorbjørn: Comme il ira et trouver chaque LDC avec un INVOKESTATIC après (Un appel à une méthode pour déchiffrer la chaîne) et décrypter/remplacer la chaîne avec le contenu de cette méthode AKA deobfuscating les chaînes dans une classe – Contra