かぴぶろぐ

またかぴったかと思った・・・(´A`;)

JAVA jadで逆コンパイル

カテゴリ[ JAVA ]

javaのシステムで既にsourceファイルが無いシステムの修正が必要な状況に陥った時、・・・sourceファイルが無い状態に陥った事自体アレなんだが、そういう時、さてどうしようと。

1ファイルの修正で何とかなりそうだったのが、たまたま運が良かったんだが、逆コンパイルしてうまくいった。

jadの入手

まずは逆コンパイルする為のjadの入手。

eclipse版もあるようだけど、今回は一ファイルのみだったので単体のjadのみ入手。

Jad - the fast JAva Decompiler

ここからjadls158.zipを取ってきて、解凍。
で、

jad Sample.class

を実行すれば、Sample.jadが出来上がる。マルチバイトがある場合はjad -8 Class名とやるといいという記事があったが、つけても結局unicodeに変換されてた。ここは手直しが必要か。

中を開いてみると、・・・sourceがきれいになってる。import文や、if条件など、無駄が取り除かれてるのでびっくり。
ん、イケそうだ。で、必要な修正を行って、再度javacでコンパイル。
と、ここでclasspathの問題に色々悩まされたが、ちゃんとclasspathを設定していけば問題なくコンパイルできた。

/usr/local/java/bin/javac \
-classpath \
/opt/webapps/WEB-INF/classes/:\
/opt/webapps/WEB-INF/lib/need_lib.jar:\
/usr/local/java/:/usr/local/java/jre/:\
/usr/local/tomcat/common/lib/servlet-api.jar \
Sample.java

大体こんな感じ。該当のwebアプリのclasspathとjava、servletのpath等をしっかりやればいいみたい。
とはいえ、これはコンパイルするsourceの内容によるので、エラー→トライの繰り返しだけど。

参考URL

 

http://kapi.jp/kapi_blog/226

2009年04月18日

関連カテゴリ JAVA

この記事のコメント

この記事にコメントする