わかりましたので、一般的な文字列の難読化解除ツールを作成しようとしています (単純なアセンブリ エクスプローラーで .NET が持っているものと同様です)
私がやりたいことは、BCEL を介してメソッドの命令を取得し、提供する引数を使用してそれらを実行し、そのメソッドの出力にアクセスすることです。既存のライブラリでこれを行うことは可能ですか? もしそうなら、私は助けを得ることができますか?
ありがとう
BCEL とリフレクション/呼び出しを組み合わせれば、この仕事を行うことができます。BCEL を使用してクラスとメソッドの名前 (あなたのLDC
、invokestatic
トリック、または類似のもの) を取得し、その直後にメソッドを呼び出します。「テストクラス」をクラスパスに配置すると、これを行うことができます。私にとって、バイトコードを実行する必要はありません。
クラスとメソッド名がある場合、次のようになります。
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