java在线反编译
有些时候我们面对一个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文件的信息。
2. 求各种好用的反编译工具!!
如PB的,最常用的是 PB反编译专家 SHUDEPB
.net,一般是Reflector
dephi,一般是dede
JAVA,比较出名的有小颖的反编译专家
XJad(Java源代码反编译工具) V2.2
XJad是基于Jad核心的Java源程序反编译软件,内置Jad1.5.8e2。
XJad可处理多个*.class文件,可以处理文件夹内的所有文件,甚至可以处理*.jar文件。
XJad带有多页面文本编辑器,反编译完成后可以直接编辑查看,编辑器支持java语法的高亮显示功能。
XJad是一个纯绿色软件,为使用方便,可以在选项中设置集成到资源管理器中,这样在*.class、*.java、*.jar文件和目录上随时点击右键都可直接进行操作。
XJad还带有导出当前编辑器中的代码为HTML文件的功能,HTML文件保持代码高亮显示的样式风格。
使用说明
===========
1、反编译class文件:打开一个或者多个*.class文件,XJad反编译后,重命名为*.java文件,保存至当前文件夹,并在编辑器中打开查看;
2、反编译文件夹:在软件中选择反编译文件夹或右键点击文件夹选择反编译,XJad将该文件夹下所有*.class文件进行反编译,并保存至该文件夹下,依据包路径信息生成文件夹路径,如com.spring.framework.*,将建立com\\spring\\framework的文件夹结构;
3、反编译jar文件:打开一个*.jar文件,XJad将该Jar文件中的所有*.class文件解压缩到临时目录并进行反编译,并将源文件带包路径信息保存至当前文件夹下名称为“~” + *.jar 的文件夹中;
flash反编译工具 闪客精灵
3. 如何对java的jar包反编译
使用现有的反编译工具或者自己写一个,jar包实际上是class文件打包的,class文件是二进制文件,使用流将class文件读入,然后转为字符再写入到文件中就完成反编译了。不过经过混淆过的jar包好像不能反编译。
4. JAVA 如何反编译的自己的程序(RCP程序)
反编译的工具有好多, 在众多的JAVA反编译工具中,有几种非常着名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和国产的JAVA源代码反编译专家。
jad是java的反编译工具,是命令行执行,反编译出来的源文件可读性较高。可惜用起来不太方便。还好
找到eclipse下的插件,叫jadclipse,安装好之后,只要双击.class文件,就能直接看源文件,包括jar
包中的class文件,也可以直接反编译。
1.下载jad1.5.8e
下载后解压。解压缩后将jad.exe拷贝到JRE的bin目录下,如d:\Java\jre1.5\bin
2.下载net.sf.jadclipse_3.2.4.jar
3.安装插件,有如下两种方法
A.将net.sf.jadclipse_3.2.4.jar复制到D:\leaf\eclipse\plugins目录下。
B.在d:\leaf下建立ecliplsePlungin\jadclipse\eclipse\plugins目录,将net.sf.jadclipse_3.2.4.jar放到该目录。在d:\leaf\eclipse\links下建jadclipse.link,内容为path=d\:\\leaf\\ecliplsePlungin\\jadclipse
3.启动Eclipse后,在Windows(窗口)-->Perference(首选项)-->Java下面应该会多出一个JadClipse目录,相关的设置可以在此修改配置jadclipse:设置path to decompiler为jad.exe的全路径,如:d:\Java\jre1.5\bin\jad.exe,在Directory for temporary files中指定临时文件的路径,如:C:\Java\temp
4、在Eclipse的Windows-->Perference-->General->Editors->File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer”
5、安装完成,双击class文件,Eclipse将自动反编译了。
6、把*.java 和*.class文件放在同一文件夹下,在反编译时它回自动去寻找*.java的文件。
反编译工具jad简单用法
以下假设jad.exe在c:\java目录下
一、基本用法
Usage: jad [option(s)]
直接输入类文件名,且支持通配符,如下所示。
c:\java\>jad example1.class
c:\java\>jad *.class
结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源
文件。
二、Option -o
不提示,覆盖源文件
三、Option -s
c:\java\>jad -sjava example1.class
反编译结果以.java为扩展名。
四、Option -p
将反编译结果输出到屏幕
c:\java\>jad -p example1.class
将反编译结果重定向到文件
c:\java\>jad -p example1.class>example1.java
五、Option -d
指定反编译的输出文件目录
c:\java\>jad -o -dtest -sjava *.class
5. JAVA反编译软件
由于JAVA语言安全性高、代码优化、跨平台等特性,从1995年5月由SUN公司发布后,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位。
不过,JAVA最突出的跨平台优势使得它不能被编译成本地代码,而要以中间代码的形式运行在虚拟机环境中,这使得JAVA的反编译要比别的高级语言容易实现,并且反编译的代码经过优化后几乎可以与源代码相媲美。
为了更好地保护知识产权,避免本公司的智力成果轻易被人窃取,开发者有必要对反编译工具深入了解,以便有针对性地采取保护措施。
目前,比较流行的JAVA反编译工具有近30种,其中有三款堪称精品:
一、 应用广泛的JAD
在众多的JAVA反编译工具中,有几种非常着名的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和国产的JAVA源代码反编译专家。
JAD本身是一个命令行工具,没有图形界面,上述的这些工具大多是在JAD内核的基础之上加了一个图形界面而已。这么多种产品的共同选择,足可证明JAD在JAVA反编译领域中的尊贵地位。
JAD是使用Microsoft Visual C++开发的,运行速度非常快,可以处理很复杂的JAVA编译文件。众多的参数使JAD可以灵活应付多种加密手段,令反编译的代码更加优化和易读。由于JAD参数太多,没必要一一解释,其中有几个最常用的如下(以JAD 1.5.8f版本为例):
-d
- 用于指定输出文件的目录
-s - 输出文件扩展名(默认为: .jad),通常都会把输出文件扩展名直接指定为.java,以方便修改的重新编译。
-8 - 将Unicode字符转换为ANSI字符串,如果输出字符串是中文的话一定要加上这个参数才能正确显示。
最常用的反编译指令如下所示:
Jad –d c:\javasource –s .java -8 javatest.class
这条指令将当前目录下的javatest.class反编译为javatest.java并保存在c:\javasource目录里,其中的提示输出为中文,而不是Unicode代码。
二、 源码开放的JODE
JODE是全球最大的开源项目网站Sourceforge.net的成员,在所有的JAVA反编译器中,JODE的反编译效果是最好的,尤其是对付一些常见的加密手段,例如混淆技术等,更是出类拔粹。
JODE本身也是纯JAVA开发的,最近越来越多的JAVA反编译软件也选择JODE来做它们的核心引擎,例如JCavaj Java Decompiler、BTJ (Back To Java)、jEdit’s JavaInsight plugin等。
JODE是一个可运行的JAR文件,在windows环境下双击即可运行。
需要特别说明的是,JODE不是通过常规的Open->File的方式来加载JAVA编译后的类文件(*.class)或是类包(*.jar)的, 而是通过在Options菜单中的Set Classpath来实现的,单独的类文件可以将它的上一级目录作为Classpath输入,然后再选择Reload Classpath即可。
新加入的类包或是类的名字会在左侧窗口出现,双击类包名可以展开目录树结构,双击需要反编译的类名则在右上角的窗口中直接显示反编译后的源代码。
三、 独树一帜的DAVA
DAVA不是一个独立的JAVA反编译器,而是JAVA代码优化工具Soot的一部分。Soot和JODE一样是纯JAVA开发的,也是一个独立的JAR包,但却不能通过双击直接运行,而是象JAD一样在命令行状态运行。
Soot对环境变量的配置要求非常严格,通常情况下要对CLASSPATH做如下设置:
Set CLASSPATH=%CLASSPATH%;c:\sootdir\sootclasses-2.1.0.jar;.;
其中的c:\sootdir\是下载的soot类包放置的路径,CLASSPATH末尾的.;代表了当前目录,如果不加上这个的话Soot经常会报一个找不到类的错误。
DAVA是作为Soot的一个参数使用的,通常的用法如下:
Java soot.Main –f dava –d c:\javasource javatest
注意最后的类名不用带.class后缀,因为它默认是处理class文件,这个操作与前述的JAD的参数效果相同。
DAVA采取了流程优化的方式进行反编译,与传统反编译思路不尽相同,但却对改变流程类的加密方法有独特的反编译效果。
上述的三种工具各有千秋,但效果都非常不错。经测试,它们基本上都可以把JDK自带的一些例程完全反编译,然后不加任何修改可再编译成功,并能正常运行!
6. Java反编译代码解释:
首先,mecuryhope所回答的,仅仅是java层面的东西,但是却不了解反编译的过程。
其次,label175和break这些,并不是java代码,而是反编译的工具无法真实还原导致的。
label175是一个标签,而break label175是表示跳转到label175这里。
7. java的反编译怎么做的
你做了很多了吧!很好,继续学吧!
class.forName():加载的是指定的一个类
.class文件是由JAVA虚拟机加载,解释执行的
阁下 可能把 方向搞错了。
JAVA的反射机制很强大,基本上所有的涉及到配置文件的,都有反射的影子。尤其是JAVA编程中的框架SSH,ibates等等。
这些框架因为使用了反射机制,在普通程序员眼里,就只有类和配置。这样系统很容易扩展和维护。
反射机制 也不要研究得太深,对于中国这个JAVA软件行业,还是应用维多,你应该不会想自己开发一个框架吧。
8. java class 文件反编译有什么用
众所周知,java编译后的文件为class文件,是看不到源码的,而反编译就是逆其道而行,把class文件反编译回java文件,简单说,就是还原文件让你可以看到源码
9. Java反编译工具有什么作用
就是把经过java文件编译后的可执行的class文件再反编译为java文件,因为经过编译的class文件是不可阅读的!但是由于java文件一般都不是单独运行的,会有类之间的相互调用,所以反编译工具反编译后只能大体上还原原来java文件,而不能完全还原,特别是一些变量的取值,定义等..
10. 北大青鸟java培训:java中的编译与反编译
一、什么是编译1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。
主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
二、什么是反编译计算机软件反向工程(Reverseengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。
反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
三、Java类的编译与反编译我们在最初学习Java的时候,会接触到两个命令:javac和java,那个时候我们就知道,javac是用来编译Java类的,就是将我们写好的helloworld.java文件编译成helloworld.class文件。
class文件打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。
通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。
而Javaclass文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。
那么反编译呢,就是通过helloworld.class文件得到java文件(或者说是程序员能看懂的Java文件)四、什么时候会用到反编译1、我们只有一个类的class文件,但是我们又看不懂Java的class文件,那么天津java培训http://www.kmbdqn.cn/认为可以把它反编译成我们可以看得懂的文件。
2、学习Java过程中,JDK的每个版本都会加入越来越多的语法糖,有些时候我们想知道Java一些实现细节,我们可以借助反编译。