应用 JD-Eclipse 插件实现 RFT 中 .class 文件的反向编译

概述

反编译是一个将目标代码转换成源代码的过程。而目标代码是一种用语言表示的代码 , 这种语言能通过实机或虚拟机直接执行。文本所要介绍的 JD-Eclipse 是一款反编译的开源软件,它是应用于 Eclipse 开发平台的插件,它可以帮助开发人员在调试程序的过程中显示所有的 Java 源代码,方便了开发人员的开发工作。

回页首

JD-Eclipse 的安装及配置

高级语言源程序经过编译变成可执行文件,反向编译就是其逆过程。但是由于反向编译的复杂性,通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。本文介绍了如何应用 JD-Eclipse 插件实现 RFT 中 .class 文件的反向编译,这种方法简单实用,运用 JD-Eclipse 插件应用于 RFT,使 RFT 具有更多方面的应用,方便了用户对 .class 文件的操作,不需要单独应用反向编译器进行方向编译的工作。

当 C 编译器编译生成一个对象的目标代码是,该目标代码是为某一个特定的硬件平台运行而产生的,在编译过程中,编译程序通过查表将所有符号的引用转换为特定的内存编译量。目标代码只能在特定的 CPU 上运行。而 Java 编译器为了保证目标代码的可移植性,并不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由 Java 虚拟机在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。由于其相对简单的 Java 虚拟机和规范的字节码格式,由 Java 字节码反编译成源代码的过程相对于 C 语言来说要简单,所以当前反编译 Java 程序非常流行。

目前有多种对于 Java 的反编译软件,下面本文将介绍一款开源的反编译软件 JD-Eclipse。JD-Eclipse 是一个插件 Eclipse 平台。它允许您调试所有的 Java 源代码。为了能够更为详实的说明 JD-Eclipse 的应用方法,下面主要介绍了 JD-Eclipse 的安装及配置过程,使开发人员能够更为快捷便利地使用。

目前有两种方式进行安装 JD-Eclipse 插件。第一种是利用 RFT 中“安装更新软件”的选项进行安装;下面本文将主要介绍手动安装的安装方法。

1. 下载相应的安装文件:jd.ide.eclipse_X.X.X.jar;jd.ide.eclipse.win32.x86_ X.X.X.jar;jd.edi.eclipse.feature_X.X.X.jar。其中 JD-Eclipse 插件提供了 Liunx,Mac 平台的相应的 jar 文件,本文以 Windows 平台为例作介绍。

2. 将 jd.ide.eclipse_X.X.X.jar;jd.ide.eclipse.win32.x86_ X.X.X.jar 这两个 jar 文件拷到安装 RFT 的文件夹中 plugins 的路径下面。

图 1. 拷入 jar 文件到 plugins 中

3. 将 jd.edi.eclipse.feature_X.X.X.jar 文件拷到安装 RFT 的文件夹中 features 的路径下面。

图 2. 拷入 jar 文件到 features 中

4. 重新启动 RFT。

5. 打开 RFT,Windows->Preferences->General->Editors->File Assciation,将 Class File Editor 设置为 default。

图 3. 设置默认显示

对于存在原始码的类,他不会强行反编译,也就是说他还是会用 eclipse 自带的 Class File Viewer 查看 class 文件。

回页首

JD-Eclipse 的使用及相关讨论

首先本节介绍了 JD-Eclipse 的应用方法,然后通过一个具体的应用实例来介绍 JD-Eclipse 的具体使用方法。文本采用 RFT 作为 Java 的开发平台,所以 JD-Eclipse 是安装在 RFT 上的一个插件进行相关讨论的。

一、JD-Eclipse 的应用方法

首先需要将反编译的文件打成 jar 的 java 包。

例如将文件 JavaTest 打成一个包,JavaTest 文件中有许多的 .class 文件。

图 4. Java 中的 .class 文件

jar 包生成方法如下面步骤所示。

1. 导入相应的工程。

2. 选择 Flie->Export->Jar file。

图 5. 选择 Jar 文件

3. 将 .class 文件导入并选择存储地址。

图 6. 导入工程

4. 生成一个 javatest.jar 文件

图 7. 生成 Jar 文件

二、JD-Eclipse 的应用实例

生成 jar 文件后需要将 jar 文件构建到工程文件中。

图 8 是没有反编译之前的所看到的文件内容。开发人员不能看到 .class 文件中的信息,对于开发人员调试代码带来的相对复杂的问题。

图 8. 反编译前的 .class 文件显示信息

采用 JD-Eclipse 插件后,可以清楚地显示出文件内容,方便开发人员的工作,也增强了开发人员在使用 RFT 过程中的方便程度。

清单 1. 以“CapturePlayback.class”为为例显示的部分代码内容
		 import  java.awt.BasicStroke;
		 import  java.awt.BorderLayout;
		 import  java.awt.Color;
		 import  java.awt.Component;
		 import  java.awt.Container;
		 import  java.awt.Dimension;
		 import  java.awt.Font; 

		 public  CapturePlayback(){
		 super.setLayout(new BorderLayout());
		 EmptyBorder localEmptyBorder = new EmptyBorder(5, 5, 5, 5);
		 SoftBevelBorder localSoftBevelBorder = new SoftBevelBorder(1);
		 super.setBorder(new EmptyBorder(5, 5, 5, 5));
		 JPanel localJPanel1 = new JPanel();
		 localJPanel1.setLayout(new BoxLayout(localJPanel1, 0));
		 localJPanel1.add(this.formatControls);
		 JPanel localJPanel2 = new JPanel();
		 localJPanel2.setBorder(localSoftBevelBorder);
		 JPanel localJPanel3 = new JPanel();
		 localJPanel3.setBorder(new EmptyBorder(10, 0, 5, 0));
		 this.playB = addButton("Play", localJPanel3, false);
		 this.captB = addButton("Record", localJPanel3, true);
		 this.pausB = addButton("Pause", localJPanel3, false);
		 this.loadB = addButton("Load...", localJPanel3, true);
		 localJPanel2.add(localJPanel3);
		 public class Playback implements Runnable{
		 SourceDataLine line;
		 Thread thread;
		 public void start(){
			 CapturePlayback.this.errStr = null;
			 this.thread = new Thread(this);
			 this.thread.setName("Playback");
			 this.thread.start();
		 }
		 public void stop() {
			 this.thread = null;
		 }
		 private void shutDown(String paramString) {
			 if ((CapturePlayback.this.errStr = paramString) != null) {
			 System.err.println(CapturePlayback.this.errStr);
			 CapturePlayback.this.samplingGraph.repaint();
		 }
		 if (this.thread != null) {
		 this.thread = null;
		 CapturePlayback.this.samplingGraph.stop();
		 CapturePlayback.this.captB.setEnabled(true);
		 CapturePlayback.this.pausB.setEnabled(false);
		 CapturePlayback.this.playB.setText("Play");
		 }
	  }
	 }

三、JD-GUI 的介绍

JD-Core 也提供了独立的运行软件 JD-GUI,它的功能完全与 JD-Eclipse 插件一样,方便不能使用基于 Eclipse 平台的人员查看反编译的文件。

图 9. JD-GUI 的操作界面

将需要反编译的文件导入即可。

图 10. 导入需要反编译的文件

这款独立的运行软件提供了强大的编辑功能,方便了开发人员对于文件的编辑,处理等操作。

回页首

总结

本文向读者介绍了如何应用 JD-Eclipse 插件实现 RFT 中 .class 文件的反向编译,这种方法简单实用,运用 JD-Eclipse 插件应用于 RFT,使 RFT 具有更多方面的应用,方便了用户对 .class 文件的操作,不需要单独应用反向编译器进行方向编译的工作。相信 JD-Eclipse 能够帮助开发人员基于 RFT 的操作提供更为方便的插件应用,为开发人员调试程序提供一个较为便捷的方法。

参考资料

学习

讨论

时间: 2024-08-05 07:09:17

应用 JD-Eclipse 插件实现 RFT 中 .class 文件的反向编译的相关文章

VS2008 工程中部分文件不参与编译 从生成中排除【Worldsing笔记】

Visual Studio 2008 .VS2008.VC2008工程源文件配置.编译配置 ? 有时编写代码时,往往存在这样的需求(或是希望有这样的功能):一个工程经过不共同的配置实现不同的版本或是功能,比如做开发包的Dome,一个库文件, 有多个API接口,以lib文件给用户提供时,我们需要提供文档和Demo,你可以一个Demo建立一个工程,但是,像VS2008这样的高级开发工具应该有解决 办法的,关键是你不知道怎么用,在VS2008环境下有这样几种解决办法: ? 建立一个工作区,在工作区里建

Eclipse插件:mybatis generator的使用步骤

一.首先,安装eclipse插件 Help--Eclipser Marketplace中查找:Mybatis Generator 1.3.5安装 二.新建project New--other--查找如下 点击next,选择你要将文件生成到哪里的项目名 点击finish关闭.就会在hhh项目中生成文件generatorConfig.xml. 注意:hhh项目中要有数据库相关jar包及要生成的包 mapper/pojo,因为一会要在配置文件中进行配置. 三.配置generatorConfig.xml

[Eclipse插件] Eclipse中如何安装和使用GrepCode插件

Java是开源的世界,如何快速的搜索到你需要的Java源码呢? 2009年7月17日,GrepCode团队发布了一个有趣的 Java源码搜索引擎-GrepCode .与现有的各种搜索引擎相比,Java源码搜索引擎-GrepCode把Java源码搜索带到了一个新的高度.Java源码搜索引擎-GrepCode 不但提供了语法的高亮显示和JavaDoc的现实,还提供了一种界面非常友好的的Java类型集成视图,便于人们搜索.用户可以很容易的找到某个特定版本代码依赖的工程代码.Java源码搜索引擎-Gre

Android 开发之开发插件使用:Eclipse 插件 SQLiteManger eclipse中查看数据内容--翻译

最近研究了一段时间Android开发后发现,google自带的ADT工具,缺失一些开发常用的东西,希望可以构建一个类似使用JAVA EE开发体系一样开发的工具包集合,包括前台开发,调试,到后台数据库的管理,到此,在网上逛了一遍发现这个一些常用的插件功能很强大,所以我决定做一系列翻译这些插件安装使用的教程,希望大家喜欢. 本文受益于这篇文章,所以决定翻译这篇文章中的一部分东西工具.19 个 Android 开发工具投递人 itwriter 发布于 2014-05-08 09:32 本文翻译:Ecl

Hadoop学习笔记—6.Hadoop Eclipse插件的使用

开篇:Hadoop是一个强大的并行软件开发框架,它可以让任务在分布式集群上并行处理,从而提高执行效率.但是,它也有一些缺点,如编码.调试Hadoop程序的难度较大,这样的缺点直接导致开发人员入门门槛高,开发难度大.因此,Hadop的开发者为了降低Hadoop的难度,开发出了Hadoop Eclipse插件,它可以直接嵌入到Hadoop开发环境中,从而实现了开发环境的图形界面化,降低了编程的难度. 一.天降神器插件-Hadoop Eclipse Hadoop Eclipse是Hadoop开发环境的

eclipse插件之Findbugs、Checkstyle、PMD安装及使用

一.什么是Findbugs.checkstyle.PMD Findbugs.checkstyle和PMD都可以作为插件插入eclipse,当然也有单独的工具可以实现他们的功能,比如Findbugs Tool就可以不必插入eclipse就可以使用. 三者的功能如下表: 工具 目的 检查项 FindBugs 检查.class 基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug 主要检查bytecode中的bug patterns,如NullPoint空指

Findbugs - Eclipse插件

简介 Findbugs是一个在java程序中查找bug的程序,它查找bug模式的实例,也就是可能出错的代码实例,注意Findbugs是检查java字节码,也就是*.class文件.其实准确的说,它是寻找代码缺陷的,很多我们写的不好的地方,可以优化的地方,它都能检查出来.例如:未关闭的数据库连接,缺少必要的null check,多余的 null check,多余的if后置条件,相同的条件分支,重复的代码块,错误的使用了"==",建议使用StringBuffer代替字符串连加等等.而且我们

一键生成JFinal模块代码(Eclipse插件)

代码生成工具在日常开发中是必不可少,因为代码生成工具能够一键生成代码,减少重复的工作,缩短开发周期.五一期间个人开发了一个基于Eclipse插件的代码生成工具(jfinal-generator),这里分享一下. jfinal-generator支持JFinal官方代码生成策略,同时也支持用户自定义代码生成策略,并支持多种数据作为数据源. 1.首先贴出一张效果图,如下图 2.以JFinal官方的Generator为例,生成BaseModel和Model等相关文件,如下图(gif) 3.自定义代码生

Eclipse 中 Java 项目中 .settings 文件夹作用

今天工作时,因对 .settings 文件夹误操作,耗时 6 个多小时,才了解到原因就出在 .settings 文件夹.经查阅资料,对 .settings 做如下整理: 就如setting这个名字,就是存放存放各种插件的配置文件..有这些文件的约束你可以更好的利用IDE进行coding.所以呢,这些文件只是用来配置环境用的. 1. org.eclipse.jdt.core.prefs 该文件是与Compile相关的配置,一般情况下的内容如下: 可以手动修改该文件,添加一些其他的配置,然后重启Ec