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

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top