問題タブ [bcel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
161 参照

java - BCEL 「this」パラメーターを渡す

私は持っている

そしてMainClass(.classファイル)にはaMethod

Apache BCEL でこれを行うにはどうすればよいですか? ありがとうございます!

0 投票する
1 に答える
1320 参照

java - javaのバイトオフセットからソースコードの行番号を取得するにはどうすればよいですか?

.class ファイルを操作しています。InstrutionHandleパッケージを使用して、一度に 1 つずつ指示を取得しています。getPosition()メソッドで命令のバイト オフセットを取得しています。バイト オフセットからソース行番号を取得できますか?

0 投票する
1 に答える
614 参照

java - Java BCEL インジェクション/置換がうまくいかない

背景: アプレットを取得するために Minecraft ランチャーを挿入していますが (これは実行済みです)、クラス ローダーを介して Minecraft のファイルをロードしたいと考えています。私は、GameUpdater.java (Minecraft の gameupdater、クライアントのアプレットのディスパッチャーでもある) のメソッドを見つけました。その下には、「createApplet」というメソッドがあります。

GameUpdater.java:

わかりました、簡単ですが、classLoader.loadClass を独自の静的ロード メソッドに置き換えます。だから、私は自分のクラスローダで試しました。ここに私の変換コードがあります:

それでも、私は顔に落ちました。これが更新された gameupdater.class です (上記のように、ダンプします)

これは、GameUpdater のメソッド createApplet のバイトコードの図です。 バイトコード情報

今、私は他にこれを行う方法がわかりません。誰かが私を正しい方向に向けることができれば、それは素晴らしいことです! それまでの間、私は努力を続け、bcel doc を読んでいきます。

その他のコードなどについて質問がある場合は、教えてください。

0 投票する
0 に答える
396 参照

java - バイトコード インジェクション後の Tomcat クラス ロード例外

webgoatのクラスの1 つ ( HammerHead.class ) に呼び出しステートメント ( cajolingMe.cajoleMe(); ) を挿入ますこのメソッドは、 fat-jarによって作成された jar ファイルから呼び出される静的メソッドです。その jar を [webgoat][3] Web アプリケーションの lib ディレクトリにコピーします。 注入されたクラスを逆コンパイルしても問題はなく、構文は true です。 (注入されたコードは太字)



しかし、Tomcatを実行すると、この例外が発生しました

webgoat サイトは、インジェクション に使用した「HTTP Status 404」[BCEL][5]です。問題はどこですか?

0 投票する
1 に答える
4324 参照

java - VerifyError: スタック サイズが大きすぎます (どういう意味ですか?)

私はJavaバイトコードにかなり慣れていません。BCEL を使用してバイトコードを生成していますが、生成されたコードを使用しようとするとエラー メッセージが表示されます。(後から考えると、ObjectWeb ASM は BCEL よりも高度で、より一般的に使用されているようです。)

エラーメッセージは次のとおりです。

メソッドは次のとおりです。

私が理解していることから、入力パラメーターと一致するため、ローカル変数テーブルは正しいです。メソッドが静的であるため、「this」変数を追加していません。

私が間違っていなければ、lconst_0 は long 値 0 をスタックにロードし、lreturn はその値を消費して返します。

私は何を間違っていますか?ここに伝えるのに十分な情報はありますか?

ありがとう!

0 投票する
2 に答える
1337 参照

java - BCEL を使用して Java バイトコードのすべての命令をトレースする

入力クラスの静的メソッドのすべての行の前に出力 (println) したいだけです。BCEL を使用してインストルメンテーションを試みましたが、別の形式のエラーが発生しました。それは言う

命令に静的メソッド呼び出しを配置すると、機能し始める場合とそうでない場合があります。どんな助けでも本当にありがたいです...

更新:修正しました。これは BCEL ライブラリに関するものではなく、計測されたクラスを検証していない JDK バージョン (1.7) でした。そのため、誰かがそのような問題に遭遇した場合は、JDK 1.6 を使用するか、JVM オプション "-XX:-UseSplitVerifier" を使用してください。

乾杯

0 投票する
1 に答える
145 参照

java - オブジェクトの状態が変化したときにメソッドを呼び出す

@validateName誰でもコードに含めることができる注釈を提供しています。誰かがコード化されていると仮定します

次に、NameValidator.validate(personObject)または同様のメソッドを呼び出して、フィールドを検証できます。

名前フィールドが常に有効な状態であることを確認したい、つまりvalidate()、注釈付き変数が変更されるたびにメソッドを自動的に呼び出したい (クラスの内部または外部のどこで変更されても)。
Eclipse にフックしてコンパイル段階で呼び出されるプラグインを作成したいと考えています。解決策を探すためのヒントをいくつか教えてください。
(何らかのAOPを実装するか、BCELなどを使用してバイトコードを変更する必要があると思います。両方を試したことがないのでわかりません。)

0 投票する
0 に答える
157 参照

java - bcel を使用して内部クラスを別の外部クラスに移動する

内部クラスを外部クラスから別の外部クラスに移動したいと考えています。bcelを使用してそれを行うことは可能ですか? 例:

に変換されます:

ありがとう。