スポンサード リンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサード リンク
-- : -- : -- | スポンサー広告 | page top↑
スポンサード リンク

Javaの逆コンパイラJadがすごい・・・変数名も再現された!

Javaのオブジェクトファイル(拡張子:class)は簡単に逆コンパイルされてしまうという話を目にしたことが幾度かありました。
そこで、Javaの逆コンパイラJadを使ってみたところ、再現度の高さに驚きました。

ソースコード MyStack.java

public class MyStack {
	
	private int[] buf;
	private static final int DEFAULT_CAPACITY = 10;
	private int sp; // Stack Pointer
	
	public MyStack() {
		this(DEFAULT_CAPACITY);
	}
	
	public MyStack(int capacity) {
		buf = new int[capacity];
	}
	
	public void push(int item) {
		buf[sp++] = item;
	}
	
	public int pop() {
		return buf[--sp];
	}
}

逆コンパイル

コマンドプロンプトで次のように入力する(*1)ことで、逆コンパイルされたファイルMyStack.jadが生成されます。

C:\work>jad MyStack.class
Parsing MyStack.class... Generating MyStack.jad

MyStack.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:   MyStack.java


public class MyStack
{

    public MyStack()
    {
        this(10);
    }

    public MyStack(int i)
    {
        buf = new int[i];
    }

    public void push(int i)
    {
        buf[sp++] = i;
    }

    public int pop()
    {
        return buf[--sp];
    }

    private int buf[];
    private static final int DEFAULT_CAPACITY = 10;
    private int sp;
}

*1: ただし、あらかじめJadがインストールされている必要があります。

追記(12/22)

変数はクラスの外部から参照される可能性がある(今回の変数はprivateなのでアクセスできませんが)ので、コンパイル時に名前を変更してしまったら困りますね。

関連する記事


スポンサード リンク

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

13 : 54 : 18 | プログラミング-Java | トラックバック(0) | コメント(0) | page top↑
<<Javaの逆コンパイラJadのインストールと使い方 | ホーム | Scilab超入門 第5回 plot関数でグラフを描く>>
コメント

コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://networkprogramming.blog18.fc2.com/tb.php/55-ec1f7a53
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |

プロフィール

TBVector

Author:TBVector

プロフィール

メールフォーム

記事検索

Google

最近の記事

人気の記事

過去の記事

カテゴリー

タグランキング

リンク

最近のコメント

最近のトラックバック

アクセスカウンタ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。