Javaのclassファイルやjarファイルを逆アセンブルする。
スポンサーリンク
Java の class ファイルを逆アセンブルするコマンドとして javap というものが JDK に用意されています。
class ファイルはバイトコードなのでテキストエディタで開いても分かり難いですけど、javap コマンドで逆アセンブルしたものならテキストエディタで読めるようになります。
自分もたまに使いますが、使い方を忘れてしまうのでメモを残しておきます。
- クラスパスのルートディレクトリを現在のディレクトリとして、x.y パッケージにある Z という class ファイルを逆アセンブルして、Z.javap というファイルに出力する場合:
javap -classpath . -verbose x.y.Z.class > Z.javap
zipinfo -1 xyz.jar \*.class| sed 's/\.class//' | xargs javap -classpath xyz.jar -verbose > xyz.javap
- ディレクトリ直下にある全ての jar ファイル内のクラスを一括で逆アセンブルして、jar ファイルごとに結果を出力する場合:
for j in `ls *.jar`; do zipinfo -1 ${j}.jar \*.class| sed 's/\.class//' | xargs javap -classpath ${j}.jar -verbose > ${j}.javap; done
なお、逆アセンブルしたファイルに出力された aload とかの命令の説明や一覧は Oracle のサイトにあります。
Wikipedia の方が分り易いかも。
参考記事: