Java反编译设置

今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程。尤其是像.NET、Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。当然,也有一些商业软件,对其程序进行了混淆加密,这样我们就很难用工具反编译了。

我选择的是jad反编译工具,并设置eclipse的jad插件,很简单,方法如下:

1.从http://sourceforge.net/projects/jadclipse/下载eclipse插件,复制到eclipse的pluggins目录下。

2.从http://www.varaneckas.com/jad下载jad工具,解压,得到jad.exe。

3.按照下文的指示配置eclipse中的路径。这样就可以从eclipse中直接查看那些没有源码的class文件的源码了。

Java反编译插件 —— Jadclipse

  JadClipse是Jad的Eclipse插件,是一款非常实用而且方便地Java反编译插件,我们只需将下载的插件包复制到eclipse的plugins目录下,然后修改window -> Preferences -> Java -> JadClipse 下的Path to decompiler ,如:C:\pin\jadnt158\jad.exe,最后在Windows -> Perference -> General -> Editors -> File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer” 即可。

Java反编译设置

  官方网站:http://sourceforge.net/projects/jadclipse/

 

使用举例:

没有源码的class文件可以从eclipse中直接查看,自动转换为可读的源文件。

如果是自己写的代码想看反编译后的文件,从eclipse中查看可能是出错的。可以用jad直接反编译:执行 jad xxx.class 即可在与class文件同目录下找到xxx.jad,该文件是反编译后的文件。

 

反编译可以看到jvm在编译时替我们做了些什么。例如:

源码:

package pack;

public class PackTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Integer i = 100;
		i += 200;
		System.out.println("i=" + i);

	}

}

java7, 反编译后可以看到是这样的:

package pack;

import java.io.PrintStream;

public class PackTest
{

    public PackTest()
    {
    }

    public static void main(String args[])
    {
        Integer i = Integer.valueOf(100);
        i = Integer.valueOf(i.intValue() + 200);
        System.out.println((new StringBuilder("i=")).append(i).toString());
    }
}

 

 

你可能感兴趣的:(java,反编译)