2

実稼働サーバーと通信するJavaベースのTCPクライアントがあり、これを書き直しています。クライアントには、サーバーのIPとポートがハードコーディングされています。私がやりたいのは、クライアントのIPアドレスだけを127.0.0.1に変更することです。これで、開発ボックスで同じポート番号を使用できます。これがこすりです、私はすべてのソースコードを持っていないので、それを単に再コンパイルすることはできません。それを書いた人はここで約4年間働いていません、そして私が彼のハードドライブを持っている間、私はコンパイルされたループバッククライアントを見つけることができませんでした(私はそれの部分的なソースコードを見つけましたが)またはすべて本番クライアントのソースコード。彼が自分のコードをネットワークドライブに書き込んだのではないかと思いますが、その間に失われました。

クライアントを逆コンパイルし、その変更で再コンパイルする方法はありますか?16進数またはバイナリ編集(私はどちらもスキルがありません、私はそれが行われたのを見たばかりです)?私の理解では、.jarファイルは単なるzipファイルであると理解しているので、おそらくWinRARですか?または、クライアントからの発信TCPトラフィックをトラップして、開発ボックスに再ルーティングする方法はありますか?テストのために本番サーバーを停止することはできません。クライアントを変更しないと、クライアントへの本番サーバーの応答をエミュレートしていることを確認するのが困難になります。

私はこのSOの記事を見つけました:jarから単一のファイルを逆コンパイルして再コンパイルしますが、逆アセンブルと逆コンパイルの違いはわかりませんが、そこで言及されているユーティリティJDを見つけました。

4

2 に答える 2

4

見つけたJavaデコンパイラ(http://java.decompiler.free.fr/)は、コンパイルされたjarファイルを取得し、Javaソースファイルを作成します。次に、ソースファイルを編集して、必要な変更を加えて再コンパイルする必要があります。

この問題を再度回避するには、コマンドラインを使用してホストとポートを構成可能にすることをお勧めします。

于 2013-02-28T20:02:49.177 に答える
2

jarファイルをシステムにコピーしてワークステーションに解凍します。次に、jadなどのツールを使用して、探しているクラスを逆コンパイルし、変更を加えます。コンパイルに必要なjarは、クライアントを実行するために必要なjarと同じであるため、コンパイルできるはずです。

于 2013-02-28T20:08:08.190 に答える