| Eclipse活用編 |
|
ソースコードを入手できないJavaプログラムを修正するときなど、クラスファイルから基になったソースコードの復元が必要になることがあります。このような方法は、ソースコードを「コンパイル」してクラスファイルを生成する通常の流れとは逆になるため、「逆コンパイル」と呼ばれています。この逆コンパイルを行えば、コンパイル時に失われる情報(コメントや定数同士の四則演算など)以外のソースコードを復元することができます。
Javaの逆コンパイルツールはいくつかありますが、本稿ではJadとJadClipseというツールを使用して、Eclipse上で逆コンパイルする方法を紹介します。
■操作手順
(1)JadとJadClipseのダウンロード
Jadはコマンドラインで使用する逆コンパイラで、JadClipseというEclipseプラグインを利用すれば、Eclipse上から使用することができます。JadClipseを利用すれば、Eclipse上でクラスファイルをダブルクリックするだけでJavaのソースコードが復元できるので、便利でしょう。
JadとJadClipseは、以下のサイトからダウンロードできます。
執筆時点の最新版は、Jadが1.5.8e、JadClipseはbeta2.06です。残念ながら、このバージョンのJadClipseは、Eclipse 3.0には対応していません。本稿では、Eclipse 2.1.3+Language Pack 2.1.2という環境で、JadClipseを使用して逆コンパイルを行う方法を説明します。
(2)Jadのインストール
まず、上記のJadのWebサイトの「Download Jad」から、使用しているプラットフォームに合ったJadアーカイブをダウンロードします。ここでは、Windows用の“jadnt158.zip”をダウンロードし、適当なディレクトリ上で展開します。
展開先にある実行ファイル(Windowsの場合はjad.exe)を、環境変数PATHに列挙してある任意のディレクトリにコピーします。通常、Javaの開発環境ではjavacコマンドのあるディレクトリ(環境変数JAVA_HOMEで示されるディレクトリ下のbinディレクトリ内)が環境変数PATHに登録されているはずなので、javacコマンドと同じディレクトリにコピーしておくのがよいでしょう。
コマンドプロンプトを開き、jadコマンドを実行します。以下のような、jadコマンドの簡易ヘルプが表示されればインストールは成功です。
C:\>jad |
注意:Webサイトではバージョンが1.5.8eとなっていますが、コマンドの簡易ヘルプでは1.5.8fと表示されます。どちらが正しいかは不明ですが、使用上は問題ありませんので、そのまま使用してください。
(3)JadClipseのインストールと設定
次に、上記のJadClipseのWebサイトから、JadClipseアーカイブ(jadclipse_b206.zip)をダウンロードします。ダウンロードしたzipファイルを適当なディレクトリ上で展開し、できたjadclipseディレクトリをそのままEclipseのpluginsディレクトリにコピーします。インストールはこれで終了です。すでに、Eclipseを起動している場合は、ここでいったん終了させます。
JadClipseのインストール後、Eclipseを起動し、[ウィンドウ]メニューから[設定]を選択して設定ダイアログを開きます。設定ダイアログで、[ワークベンチ]→[ファイルの関連付け]を選択し、以下の図のように[ファイル・タイプ]一覧にある“*.class”を選択してから“JadClipse Class File Viewer”を選択し、[デフォルト(F)]ボタンをクリックします。これで、[関連付けられたエディター]一覧に“JadClipse Class File Viewer(デフォルト)”と表示されるようになります。
![]() |
| クラスファイルとJadClipseの関連付け |
次に、設定ダイアログで[Java]→[JadClipse]を選び、[Ignore existing source]チェックボックスをオンにします。また、[Reuse code buffer]チェックボックスはオフにしておきます。これにより、クラスファイルをダブルクリックすると、必ず逆コンパイルが行われるようになります。
![]() |
| JadClipseの設定 |
最後に、設定ダイアログで[Java]→[JadClipse]→[Misc]と選び、[Convert Unicode strings into ANSI strings]チェックボックスをオンにします。この項目がチェックされていないと、逆コンパイルされた結果内の文字列に含まれた日本語が“\xu3042”のようにUnicodeのコード番号として表示されてしまい、読みづらくなってしまいます。
![]() |
| 文字列のコード変換の設定 |
ここまで設定できたら、[OK]ボタンをクリックして、[設定]ダイアログを閉じます。
(4)JadClipseの使い方
プロジェクト内に逆コンパイルしたいクラスファイルを置きます。[ウィンドウ]メニューから[ビューの表示]→[ナビゲーター]を選択し、ナビゲータービューを開きます。ナビゲーター上で、逆コンパイルしたいクラスファイルをダブルクリックすると、逆コンパイルされた結果が表示されます。
![]() |
| 逆コンパイルして得られたソースコードの表示 |
| 「Java TIPS」 |
- 「全体を見る」ためのビジネスプロセス・BPMの常識 (2010/9/2)
BPMの概要やPDCAサイクルについて解説し、BPMSの1つである「JBoss jBPM」でサンプルを体感してみます - 将来性から見たJavaと.NETの違い、そして連携は? (2010/8/27)
Webサービスやクラウド、技術以外でもサポートやコミュニティなどの面で、Javaと.NETそれぞれの将来性について考察し、両者の連携例も紹介 - XMLレイアウトでAndroidアプリに“設定画面”を追加 (2010/8/19)
アプリには欠かせない設定画面について、基になるクラスや使えるコンポーネント、XMLによるレイアウトの仕方を解説します - UNIX/Linuxも楽しむJava開発者になるための学習法 (2010/8/10)
Tomcatなど、サーバサイド開発のコンテナ管理やAndroidアプリ開発など、UNIX系OSの知識が必須の時代です。筆者が学習法を伝授します
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報












