質問
さて、私は一般的な文字列deobfuscatorを書き込もうとしています(.NETがSimple Assembly Explorerで持っているものに似ています)
私がやりたいのは、BCELを介してメソッドの指示を取得し、そのメソッドの出力に提供し、アクセスできる引数でそれらを実行することです。これは既存のライブラリでやることができますか?もしそうなら、私はいくつかの助けを得ることができますか?
ありがとう
解決
BCELとリフレクション/呼び出しの組み合わせが仕事をすることができます。 BCELを使用してクラスとメソッドの名前を取得します(あなたの LDC
, invokestatic
トリックまたは似たようなもの)とその直後にメソッドを呼び出します。クラスパスに「テストクラス」を配置すると、これを行うことができます。私には、BYTEコードを実行する必要はありません。
クラスとメソッド名がある場合、次のようになります。
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
所属していません StackOverflow