目前,比较流行的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版本是1.5.8f,其运行界面如下图:
http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1001.0161.jpg
JAD是使用Microsoft Visual C++开发的,运行速度非常快,可以处理很复杂的JAVA编译文件。众多的参数使JAD可以灵活应付多种加密手段,令反编译的代码更加优化和易读。由于JAD参数太多,没必要一一解释,其中有几个最常用的如下:
-d <dir> - 用于指定输出文件的目录
-s <ext> - 输出文件扩展名(默认为: .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环境下双击即可运行,其运行界面如下:
http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1002.0373.jpg
需要特别说明的是,JODE不是通过常规的Open->File的方式来加载JAVA编译后的类文件(*.class)或是类包(*.jar)的,而是通过在Options菜单中的Set Classpath来实现的,单独的类文件可以将它的上一级目录作为Classpath输入,然后再选择Reload Classpath即可:
http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1003.07741.jpg
http://www.blogchina.com/resource/u....1004.08813.jpg
新加入的类包或是类的名字会在左侧窗口出现,双击类包名可以展开目录树结构,双击需要反编译的类名则在右上角的窗口中直接显示反编译后的源代码。
三、 独树一帜的DAVA
DAVA不是一个独立的JAVA反编译器,而是JAVA代码优化工具Soot的一部分。Soot和JODE一样是纯JAVA开发的,也是一个独立的JAR包,但却不能通过双击直接运行,而是象JAD一样在命令行状态运行。
http://www.blogchina.com/resource/upload/pic/2006/03/17/264618335.1005.09938.jpg
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自带的一些例程完全反编译,然后不加任何修改可再编译成功,并能正常运行!
分享到:
相关推荐
JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA反编译工具JAVA...
然而,由于其编译后的代码是二进制形式,直接查看源代码并不容易,这就引出了“Delphi反编译工具”的概念。 Delphi反编译工具是用来将已编译的Delphi可执行文件(.exe或.dll)转换回接近原Delphi源代码的形式的软件。...
Java Class反编译工具是程序员在处理已编译的字节码文件时不可或缺的辅助工具。这类工具的主要功能是将`.class`文件转换回可读性强的`.java`源代码,帮助开发者理解或修改已有的Java程序,尤其在没有源代码的情况下...
反编译工具则是针对已编译的程序进行逆向工程操作,以获取源代码或者理解程序内部工作原理的软件。在易语言环境中,反编译工具扮演着重要的角色,它可以帮助开发者分析和学习其他易语言程序的实现,或者用于调试和...
这就是反编译工具的作用。本文将详细介绍两款常用的Android反编译工具——dex2jar和apk2java,以及如何利用它们获取APK中的Java源代码和资源文件。 一、dex2jar dex2jar是一款将Dalvik字节码(.dex)转换为Java...
VB6.0反编译工具是一种专门用于解析和恢复Visual Basic 6.0编译后的程序代码的软件。在编程领域,编译器将高级语言(如VB6.0)编写的源代码转换为机器可执行的二进制代码,这个过程是不可逆的。然而,反编译工具试图...
在IT领域,C++反编译工具是一种用于分析和理解已编译C++程序的工具。这类工具的主要目的是为了揭示可执行文件(如.exe或.dll)的内部结构,特别是它们的依赖关系和使用的函数接口。下面我们将深入探讨C++反编译工具...
Java反编译工具是程序员在开发和调试过程中经常会用到的一种实用软件,它能够将已编译的Java字节码(.class文件)转换回源代码格式,这对于查看和理解第三方库或者研究已有的二进制代码非常有帮助。本绿色版的Java反...
在"ec反编译工具.rar"压缩包中,我们看到两个文件:Newtonsoft.Json.dll和E模块反编译工具.exe。前者是著名的Json.NET库的DLL文件,它是.NET平台上广泛使用的JSON序列化和反序列化库,很可能在此工具中用于处理反...
在某些情况下,我们可能需要查看或理解这些二进制文件的原始Java代码,这时就需要用到"Class文件反编译工具"。 "Class文件反编译工具"是一种专门用来将`.class`和`.jar`文件转换回可读的Java源代码格式的软件。这种...
此时,就需要用到反编译工具,而jd-gui就是这样一款强大的JAVA反编译工具。它以其简单易用、功能齐全的特点,深受广大开发者喜爱。 首先,jd-gui是一款开源的Java反编译工具,能够将字节码还原为接近原始的Java源...
本文主要介绍关于"LUAC反编译"和相关的Lua反编译工具,以及如何进行Lua字节码的解密和分析。 首先,LUAC编译器的工作原理是将Lua源代码解析成抽象语法树(AST),然后将其转化为二进制的字节码。这个字节码不是人类...
标题提到的“jar包反编译工具看jar包源码必备”揭示了这个主题的关键——如何利用反编译工具来查看和理解jar包中的代码逻辑。 反编译是将已编译的字节码(如Java的.class文件)转换回源代码的过程,这有助于我们...
标题 "VFP 反编译工具全集" 涉及到的是Visual FoxPro(VFP)编程环境下的一个特定领域——反编译技术。Visual FoxPro是Microsoft开发的一种关系数据库管理和开发工具,广泛用于创建桌面应用程序。在描述中提到的“可...
当我们遇到不熟悉的JAR文件,想要学习其中的代码逻辑或查找特定功能实现时,就需要使用到“jar文件反编译工具”。反编译是将已编译的字节码转换回源代码的过程,这对于理解和学习第三方库的内部工作原理非常有用。 ...
DELPHI反编译工具是一种专门用于解析和理解DELPHI编译生成的DLL和OCX控件源代码的软件。DELPHI是一款强大的面向对象的编程环境,它使用Pascal语言并以其高效的编译器和VCL(Visual Component Library)库著称。当...
标题中的“Android反编译工具包(最完整的Android反编译工具包)”表明这是一个集合了多种工具的资源包,用于帮助开发者和安全研究人员进行APK的反编译工作。 首先,让我们来了解一下反编译的基本概念。反编译是将已...
ASP反编译工具是针对使用ASP(Active Server Pages)技术编写的应用程序的一种实用软件,它能够将已编译的ASP页面还原成源代码,便于开发者查看、学习或调试代码。在编程领域,反编译是一种逆向工程的过程,通常用于...