Question

D'accord, donc je suis en train d'écrire une DeObfuscator chaîne générique (similaire à ce que .NET a avec Simple Explorateur Assemblée)

Ce que je veux faire est de saisir par BCEL et les exécuter les instructions d'une méthode avec des arguments que je propose et avoir accès à la sortie de cette méthode. Est-ce possible de faire avec les bibliothèques existantes? Si oui, puis-je obtenir de l'aide?

Merci

Était-ce utile?

La solution

Une combinaison de BCEL et de réflexion / appel pourrait faire le travail. Utilisez BCEL pour obtenir les noms des classes et méthodes (votre LDC, tour de invokestatic ou similiar quelque chose) et invoquer le droit de méthode 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 d'octets.


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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top