Frage

In Ordnung so versuche ich, einen generischen String Deobfuscator (ähnlich wie .NET hat mit einfacher Montage Explorer) zu schreiben

Was soll ich tun ist, ein Verfahren Anweisungen über BCEL greifen und führen sie mit Argumenten ich bieten und haben Zugriff auf den Ausgang dieses Verfahrens. Ist dies möglich mit bestehenden Bibliotheken zu tun? Wenn ja, kann ich Hilfe bekommen?

Danke

War es hilfreich?

Lösung

Eine Kombination von BCEL und Reflexion / Aufruf könnte die Arbeit machen. Verwenden BCEL nach den Namen der Klassen und Methoden (Ihrem LDC, invokestatic Trick oder etwas ähnlich) und rufen Sie das Verfahren richtig zu machen. Sie können dies tun, wenn Sie Ihre „Testklassen“ setzen auf dem Classpath. Für mich gibt es keine Notwendigkeit Byte Code auszuführen.


Wenn Sie eine Klasse und einen Methodennamen haben, geht es wie folgt aus:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top