反编译整个java项目
如今JAVA语言在全世界范围正如火如荼般的流行,它广范地应用在INTERNET的数据库、多媒体、CGI、及动态网页的制作方面。1999年在美国对JAVA程序员的需求量首次超过C++!
作者因最近分析一些JAVA程序,对JAVA的反编译进行了一番了解,下面将我所了解的情况作以下介绍,希望对JAVA爱好者有所帮助。
JAVA是采用一种称做“字节编码”的程序结构,分为小程序(嵌入到HTML文件中)和应用程序(直接在命令状态下执行)两种类型。无论哪种结构,一旦用JAVAC 命令编译后,均变成后缀为CLASS的同名可执行文件。这种文件是不可阅读的代码。
经查阅了SUN公司的JDK(JDK1.1.3)文档资料后,我找到了一个据称是可反编译JAVA的JAVAP文件(EXE),这个文件位于\JDK\BIN\ 下面,经按说明使用后,感到失望,原来这个“反编译”仅可反编译出JAVA程序的数据区(定义)、若干方法和类的引用等。
这里我用了一个简单例子来说明问题。
JAVA的源程序hello_java.java如下:
import java.applet.*;
import java.awt.*;
public class hello_java extends Applet
{
public void paint(Graphics g)
{
g.drawString("Hello Java!\n",20,20);
}
}
经用反编译命令:javap -c -package -public -private hello_java hello.java
得到的反编译结果(hello.java)如下:(有关javap命令的选择参数请见其使用说明,这里-c表示选择了反编译)
Compiled from hello_java.java
public synchronized class hello_java extends java.applet.Applet
/* ACC_SUPER bit set */
{
public void paint(java.awt.Graphics);
public hello_java();
Method void paint(java.awt.Graphics)
0 aload_1
1 ldc #1
3 bipush 20
5 bipush 20
7 invokevirtual #6
10 return
Method hello_java()
0 aload_0
1 invokespecial #5 ()V>
4 return
}
‘贰’ java的反编译怎么做的
你做了很多了吧!很好,继续学吧!
class.forName():加载的是指定的一个类
.class文件是由JAVA虚拟机加载,解释执行的
阁下 可能把 方向搞错了。
JAVA的反射机制很强大,基本上所有的涉及到配置文件的,都有反射的影子。尤其是JAVA编程中的框架SSH,ibates等等。
这些框架因为使用了反射机制,在普通程序员眼里,就只有类和配置。这样系统很容易扩展和维护。
反射机制 也不要研究得太深,对于中国这个JAVA软件行业,还是应用维多,你应该不会想自己开发一个框架吧。
‘叁’ java项目可以反编译吗
当然可以,网络一下有很多反编译软件,可以完全编译成源码呢
‘肆’ 几种java反编译软件的安装以及使用总结
下面是在网上找的几种反编译软件的安装以及使用:
一、JD-JUI
官网下载链接:http://jd.benow.ca/
下载之后解压,
点击“jd-gui.exe”运行:
直接将".jar"文件拖入进去即可查看里边的“.class”文件,如上图所示。
二:Luyten
官网下载链接:https://github.com/deathmarine/Luyten/releases/tag/v0.5.3
点击“luyten-0.5.3.exe”下载,下载之后点击运行,运行后的界面如图所示,同样也是讲“.jar”文件拖入进入即可。
三、在eclipse中安装反编译工具
准备工作:
“jad.exe”下载:https://varaneckas.com/jad/
“net.sf.jadclipse_3.3.0.jar”下载:https://sourceforge.net/projects/jadclipse/files/
jad.exe”下载:
“net.sf.jadclipse_3.3.0.jar”下载:
然后将“net.sf.jadclipse_3.3.0.jar”拷贝到eclipse的plugins目录下,再删除eclipse的configuration目录下“org.eclipse.update”文件,这一步很重要!
重启eclipse,点击window->Preference->Java,你会发现里边多了一个插件“JadClipse”,
选中这个插件,将下图中红圈圈的地方的地址填写为你 “jad.exe”文件的地址
还没有配置完,先不要close,
点击General->Editors->File Associations 后,进入下边的界面
设置.class 文件默认打开方式:
设置.class without source文件的默认打开方式,
需要注意的是,“JadClipse Class File Viewer”这个一开始是没有的,需用添加,如下图所示:
接下来在eclipse中查看反编译后的代码:(这种方法可能不合适,但是能够查看)
新建一个EJB project,右键“import”,选中"EJB JAR file",导入你的jar包,Finish
在项目下找你要查看的反编译的文件即可,如果你遇到了下边的这种情况
关闭这个文件后再次打开,就可以查看了(我的是这样,所以我感觉这个方法不太好,但别的方法又不知道怎么查看):
有错误或者有更好的方法,希望大家在下边留言指出
‘伍’ 如何快速反编译JAVA的jar包或war包
有些时候我们面对一个class文件jar包或者war包,很想知道里面有什么参数,有什么方法,但是又没有文档,又没有源代码,那怎么办呢。
没关系,我们可以反编译这些class文件或jar包或war包。
java的class文件存储的是字节码,这些基本知识在此就不必啰嗦了。反正就是其存储的信息足够可以反编译出来。
我们下载TTools中dist文件夹下的TdeCompile.jar可执行jar包,然后就可以开始反编译工作了。使用方法很简单,在命令行输入命令即可,如下
[plain] view plain
java -jar TdeCompile.jar xxx.class
注意如果你不在TdeCompile的同目录下,需要写上TdeCompile.jar的路径,其次跟一个参数xxx.class,xxx代表你所要反编译的文件的文件名。输出即是xxx.class.txt,它是反编译过后的文件,txt文本格式,所在目录通xxx.class。请确保你在xxx.class目录下有写权限。
我们也可以直接操作一个jar包或war包。如:
[plain] view plain
java -jar TdeCompile.jar xxx.jar
程序可以自动识别是class文件还是jar或war包,如果是jar包或war包,则首先自动解压缩,解压缩的目录为xxx.jar的同一个目录,然后逐个反编译class文件,在每个class文件的旁边输出一个xxx.class.txt文件。请确保你在jar包所在目录有写权限。
TdeCompile的原理是利用了ASM去读取每一个class文件的信息。
‘陆’ java的反编译怎么使用,说具体点
1.下载jad1.5.8e
http://www.kps.com/jad.html#download
下载后解压。解压缩后将jad.exe拷贝到JRE的bin目录下,如\Java\jre1.5.0_06\bin
2.下载 jadclipse_3.1.0.jar
http://jaist.dl.sourceforge.net/sourceforge/jadclipse/jadclipse_3.1.0.jar
将jadclipse_3.1.0.jar复制到D:\Program Files\eclipse\myplugin\eclipse\plugins目录下(用的是
link方式安装插件的)。
3.启动Eclipse后,在Windows-->Perference-->Java下面应该会多出一个JadClipse目录,相关的设置可
以在此修改
配置jadclipse:设置path to decompiler为jad.exe的全路径,如:F:\Java\jre1.5.0_06\bin\jad.exe
,在Directory for temporary files中指定临时文件的路径,如:G:\Java\eclipse-SDK-3.0-win32\temp
4、在Eclipse的Windows-->Perference-->General->Editors->File Associations中修改“*.class”默
认关联的编辑器为“JadClipse Class File Viewer”
5、安装完成,双击class文件,Eclipse将自动反编译了。
‘柒’ jd-gui 怎么反编译java项目
/*** Eclipse Class Decompiler plugin, right (c) 2012 Chao Chen ([email protected]) ***/
推荐你使用这个插件 csdn上面有详细安装过程,也可以联系作者。
‘捌’ 如何将java中的.class文件反编译
可以使用jad:反编译工具
可以将class文件反编译成java文件
假设将jad.exe安装在f:/java/jad目录下
把要反编译的文件*.class复制到此目录下,接着接以下步骤,
在命令行窗口环境中进入jad目录,
然后运行:jad -s java *.class (附,*.class指要反编译的文件名)
如果*.class文件和jad程序不在同一个目录,就要用到path环境变量,
将jad 所在目录加到path路径中即可:set path=%path%;f:/java/jad
若要了解jad更为详细的使用帮助信息,直接运行jad.exe查看