Domanda
Va bene così sto cercando di scrivere un Deobfuscator stringa generica (simile a quello che ha .NET con il semplice assemblaggio Explorer)
Quello che voglio fare è prendere le istruzioni di un metodo tramite BCEL ed eseguirli con argomenti che fornisco e avere accesso alla produzione di tale metodo. Questo è possibile a che fare con le librerie esistenti? Se è così, posso avere un aiuto?
Grazie
Soluzione
Una combinazione di BCEL e di riflessione / invocazione potrebbe fare il lavoro. Utilizzare BCEL per ottenere i nomi delle classi e metodi (il tuo LDC
, invokestatic
trucco o qualcosa la classica) e richiamare il metodo giusto dopo. È possibile farlo se si mette le "classi di prova" nel classpath. Per me, non c'è bisogno di eseguire codice byte.
Se si dispone di una classe e un nome di metodo, va in questo modo:
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