Javaの逆コンパイルをする | sola's note

sola's note

日ごろのメモを書いていきます。何か新しいものを作るために。

プログラムをそれなりにやっている人であれば
それなりに知っていると思われる

逆コンパイル

自分もプログラムを始めてからそれなりの期間が経つけれど(仕事ではやってないけど…)
この方一回もやったことがなかった。

ということでやってみた。

勿論対象の言語はJava
Jadというツール?を使うと簡単に出来てしまうということで、
その再現性を確認してみた。

[逆コンパイル対象のJavaファイル]
public class HelloWorld {

    /** こんにちはの静的変数 */
    private static String str2 = "good afternoon!";

    public static void main(String[] args) {

        String str1 = "Hello World!";

        // 「こんにちは」を表示します。
        System.out.println(str1);

        // 「こんにちは」を表示します。
        System.out.println(str2);
    }
}

[逆コンパイル後のJadファイル]
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: HelloWorld.java

import java.io.PrintStream;

public class HelloWorld
{

    public HelloWorld()
    {
    }

    public static void main(String args[])
    {
        String str1 = "Hello World!";
        System.out.println(str1);
        System.out.println(str2);
    }

    private static String str2 = "good afternoon!";

}

どうやらコメントは再現出来ないけれど、
変数名や処理は結構な感じでそのまま再現される。

こりゃすごい。

ちなみにJadのサイトはここ
http://www.varaneckas.com/jad