2016-04-06 6 views
3

これはばかげた質問のように聞こえるかもしれませんが、私はこれを実行している実用的な製品を持っているので、質問する必要があります。実行中のアプレットの内部へのアクセス

私はブラウザ内でアプレットを実行しています。このアプレットは、単なるアプレットではなく、CRM/ERP用のかなり複雑なパッケージアプリケーションです。私はベンダーの会社から、ユーザーがアプレット内で何をしているのかを、実行前にランタイムにアプレットのメインクラスを置き換えて監視できることを伝えました。使用される用語は「支持する」ものであった。

私は今はちがう。何らかの方法でハックすることができたとしても、アプレットの中をどのように見て、ユーザーのクリックやキーボードイベントを聞くことができますか?これは本当の話です。私はこのベンダーのアプリケーションを見て、バックグラウンドにいて、すべてのコンテキスト情報を記録しているからです(たとえば、ユーザーがアプレット内のテキストボックス、テキストボックスの名前、等)。

これは、クラスローディングレベルのハック(私はこれに尋ねると感じます)か、私がJavaの中で出会ったことのない何かが、このような「都市の伝説的な」ことをさせるでしょうか?

+0

私はこれについて少し研究しました。 jax-ws、jaxpなどの標準のjdkライブラリをオーバーライドするために、標準の承認されたライブラリの独自の実装を記述し、jorsのendorsed libフォルダに配置できるようです。さて、私の質問の文脈では、アプレットの中で何が起こっているのかを観察するために標準的な裏書きライブラリがどのように使われるのか理解できません。たとえば、すべてのネットワークメッセージを記録するために私自身のjax-wsを書くとしましょう。これはERPがHTTPではなくSOAPで暗号化とカスタムプロトコルを使用するため、私を助けません。 – Jay

+0

スイングライブラリを置き換えるだけの場合はどうなりますか?ジュールに – tak3shi

+1

?あなたはJavaコードベースを取得し、独自のコードを書いて、再コンパイルしてjreを置き換えるのが好きですか? - 私はそれがロングショットだと思う。もっともらしいですが、その仕事の大きさを考えると、私は彼らがそうしているとは思わないのです。 – Jay

答えて

0

スイング/ AWTイベントをキャプチャするための解決策は、それがブラウザから起動するアプレットで使用されるスイング/ AWTクラスを上書きすることは困難である Want javax.swing hook that tells me WHICH component in the hierarchy is executing an action

で見つけることができます。 彼らはJavaセキュリティマネージャの保護を破って、JREが承認したライブラリフォルダの書き込み許可を得なければなりません。 この場合、エンドユーザーの手動操作なしでは、Javaの承認された標準のオーバーライドメカニズムを実装することは難しいです。

+0

アプレットを起動する前に、ユーザーの許可を得てエンドユーザーのマシンにActiveXコンポーネント/ユーザーソフトウェアをインストールします。さて、彼らは何かをするユーザーのアクセス許可を持っている場合でも、どのように彼らはメカニズムをオーバーライドするJavaの承認標準を実装するのだろうか?どのAPIがアプレットのためにオーバーライドしますか?選択肢も限られています。あなたはJAXB、JAX-WSなどのようなapisだけを行うことができます。 – Jay

1

Javaアプレットは、このようにHTMLタグを使用してロードされます。

<applet archive="ApplicationSP1.jar,Application.jar" code="Main.class" name="myApp" width="800" height="600"></applet> 

は、あなたが見ることができるよう、「アーカイブ」属性には、いくつかの.jarファイルをサポートしています。

アプリケーションのJavaクラスの独自のバージョンをApplicationSP1.jarファイルにロードすることによって、この手法を使用することができます。 2番目のApplication.jarに格納されているクラスの前にロードされます。

明らかに、元のアプリケーションのどのクラスを上書きまたは折り返すかを理解するには、リバースエンジニアリングを行う必要があります。次に、オーバーライドする名前と同じ名前(同じパッケージとクラス名)の新しい名前を作成する必要があります。

その他のオプションは、アプリケーションでイベントをキャプチャし、HTMLアプレットタグのアーカイブ属性に複数の.jarと同じ手法を使用してロードするアスペクトを開発することです。

+0

これはおそらく探検する価値のあるものです。 – Jay

関連する問題