Pregunta

Muy bien, así que estoy tratando de escribir un Deobfuscator genérico de la cuerda (Similar a lo que tiene .NET con Simple Explorador Asamblea)

Lo que quiero hacer es agarrar las instrucciones de un método a través BCEL y ejecutarlos con argumentos que proporciono y tener acceso a la salida de ese método. ¿Es posible esto que ver con ninguna bibliotecas existentes? Si es así, ¿puedo obtener ayuda?

Gracias

¿Fue útil?

Solución

Una combinación de BCEL y reflexión / invocación podría hacer el trabajo. Uso BCEL para obtener los nombres de las clases y métodos (el LDC, truco invokestatic o algo similar) e invocar el derecho método después. Usted puede hacer esto si usted pone sus "clases de prueba" en la ruta de clase. Para mí, no hay necesidad de ejecutar código de bytes.


Si usted tiene una clase y un nombre de método, que dice así:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top