2017-10-20 1 views
2

最近、わかりにくい内部アプリケーションを実行しているサーバーを掘り出しました。それはtomcat6/java6の中で走っていて、何年も前から維持されていません。手始めにjava6ウェブアプリケーションを完全に逆コンパイルする

は、私は、アプリケーションリッピング(ないWARのが、「爆発」/var/lib/tomcat6/webapps/ROOTでディレクトリ)のサーバのうちと(ベースとしてdebian-eol/squeezeを使用して)ドッカー環境をセットアップするため、アプリケーションは、年齢、古いことを必要とせずに取り組んでいます機械。しかし、まだソフトウェアのバグを修正する必要があり、ソースコード(元々はそれを書いた人たち)はもういない。

jdGuiは、個々のコンポーネントのjarファイルと.classファイルを逆アセンブルすることができますが、プロジェクト全体を(つまり、-SNAPSHOT jarsの束をWEB-INF/lib/に分割し、さらに多数のOSSライブラリに分割して) EclipseやIDEAにロードして、単に「再コンパイルする」ことができますか?

+1

短い回答、いいえ。あなたは自分が選んだJD-GUIの逆コンパイラから得たものからソースを再構築するという恐ろしい作業に着手することもできます。その後、何かが効くようになるまでそれらを再コンパイル、デプロイ、テストします。私は今あなたになりたくありません。 – Mena

+0

また、逆コンパイルの品質は、コンパイル時の元のコンパイラ設定に依存します。今すぐあなたは損害査定をすることをお勧めします - あなたは完全な情報源を取り戻す必要がありますか、あるいはクラスや2つを置き換える簡単な修正を行うことができますか?これに対する答えは、時間がかかるので、あなたの行動と予算を決めるかもしれません。 –

+0

IntelliJの最新バージョンには適切なデコンパイラがあることに注意してください。これはかなりあなたの道を得るかもしれない。 –

答えて

1

jdGuiは、個々のコンポーネントのjarファイルを逆アセンブルして .classファイル、[...]しかし、EclipseやIDEAにロードすることができ、プロジェクト全体の何か をオンにする方法があることができ、「単に」こと再コンパイル?

「単純な」方法または「単純でない」方法と呼ばれる方法がありますが、単純ではあるものの時間がかかるか、時間がかかるかどうかに大きく依存しますシンプル。

自動逆アセンブラは、開発者が書いたコードのように見えないコードを生成する傾向があります。これは、新しい問題が発生したこと、逆アセンブラのコードを読むのが難しいことを意味します。その一方で、逆アセンブルを経験した経験豊富な開発者は、同じドロップイン置換にコンパイルされたJava OpCodeを読んでコードを書くことができます。どちらの方法も成功の可能性を高めます。

次に、意味のある内部変数名を再構成する方法について説明します。これらは通常、コードを読みやすくする上で非常に重要です。安価なコードのメンテナンスの前提条件となります。経験豊かな開発者は、コードの構造をよく読んで、デバッガでプラットフォームを観察し、変数の名前を推測します。しばしばそれで十分ですが、やはり遅いプロセスです。

最後に、コードの構造を十分に理解して、問題を正しく修正する必要があります。あなたが運が良ければ、問題はカプセル化された小さなコードブロックに影響します。このような状況下で、単体テストの小さなスイートを構築することで、文書化されていないが他の必要なロジックを修正することができます。

あなたが役に立たない場合は、複数のモジュールを一括して更新する必要があります。これもまた、変更されているすべてのモジュールが安全に変更できるように十分に理解されていなければならないことを意味しています(ほとんど判読できない環境)。

これで完了です。これは、たくさんの仕事が、修正したい問題に直接貢献しないかもしれない多くの仕事です。この分野に精通している人は、JARファイルを再パッケージ化して、作業の進捗に合わせてランタイム・デバッグを行うことができます。私はそれを前にしてきて、Menaのコメントを完全に理解しています。しかし、私は奇妙な鳥です、私は仕事が好きでした。

しかし、私はあなたが十分な深さのポケットを持っていれば気になります。トラフィックをコンテナに出し入れするだけで安いかもしれませんし、同じことをする新しい取り替えを書くこともできます(ただし、スーパークリティカルなメッセージをログに記録する危険性があります。キャプチャしていない状態で)。

+0

それで、プロジェクトのニュース - jdGuiは元の変数名のように見えますが、唯一欠けているのはコメントですが、私はこれで暮らすことができます。それは合計で512ファイルで、7つのJARに分散しており、大体よく見えます。 mavenのためのpom.xmlとプロジェクトを "再構築"するためのpom.xmlを自動的に生成する方法はありますか?これを一から書く必要がありますか? –

+1

@MarcoSchusterあなたが使っているツールはそれほど重要ではありません。あなたが最もよく知っているツールを使用したいと思います。つまり、依存関係の正確なバージョンを特定するか、既存のjarファイルのライブラリディレクトリを使用するようにツールをハックする必要があります。最初のものはより多くの作業ですが、一般的には、(通常は既知のバージョンのコードのソースコードを見つけることができるので)通常はライブラリの内外にデバッグするため便利です。基本的に、元のプロジェクトファイルに存在していたものを書き込もうとしています。 –

関連する問題