質問

さて、私は一般的な文字列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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top