目前,比较流行的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.jpgJAD是使用Microsoft Visual C++开发的,运行速度非常快,可以处理很复杂的JAVA编译文件。众多的参数使JAD可以灵活应付多种加密手段,令反编译的代码更加优化和易读。由于JAD参数太多,没必要一一解释,其中有几个最常用的如下:

-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环境下双击即可运行,其运行界面如下: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.jpghttp://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.jpgSoot对环境变量的配置要求非常严格,通常情况下要对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反编译工具精选相关推荐

  1. java 源码分析_Java 源代码编译成 Class 文件的过程分析

    原标题:Java 源代码编译成 Class 文件的过程分析 在上篇文章< Java三种编译方式:前端编译 JIT编译 AOT编译 >中了解到了它们各有什么优点和缺点,以及前端编译+JIT编 ...

  2. java编译机制_java的编译机制

    我们通常写的文件都是java文件,最后要在JVM上运行则需要将java文件编译成class(二进制文件). 各厂商在实现JDK时通常会符合java语言规范的源码编译为class文件的编译器.编译器的好 ...

  3. java替换一个反斜杠_java反斜杠替换

    java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠 例如 str1="aa\bbb"; str2="aa'bbb"; 要想替换成 str ...

  4. java反编译教程_Java反编译工具 - JD-GUI 下载地址及使用手册

    Java反编译工具 - JD-GUI 下载地址及使用手册 ## 概述 JD-GUI是一个用C++开发的Java反编译工具,由Pavel Kouznetsov开发,支持Windows.Linux和Mac ...

  5. java 反编译 下载_java反编译工具

    java反编译工具是一款反向翻译Java工具,能够帮助用户将.class文件反向编译成Java文件,还可以还批量处理.class文件..jar文件,使用多页面编辑功能能大大提高操作人员反向编译效率,非 ...

  6. java逆向反汇编工具_java反编译工具(XJad)v2.2

    本帖最后由 Heart 于 2020-10-31 13:54 编辑 当时学JAVA的时候有用到,后面仔细找一找好像很多地方的链接都失效了. 可以反编译jar包 挺好用的,可惜是06年更新的2.2版本一 ...

  7. java是解释型_Java 是编译型还是解释型?

    Java 是编译型还是解释型? Java既不属于传统的编译型语言,也不属于解释型语言,Java是先编译成".class"字节码文件,然后再利用JVM虚拟机进行解释执行的,所以Jav ...

  8. java dump分析工具_Java 性能分析工具 (2):Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  9. java编译源文件_Java实现编译源文件(Java源码)

    代码案例: import java.util.ArrayList; import java.util.List; import javax.tools.DiagnosticCollector; imp ...

最新文章

  1. php折线图 布局图
  2. qt程序部署在linux,Qt应用打包发布,部署真正的Qt程序LinuxWindows-Go语言中文社区...
  3. STANDARD_FULLSCREEN
  4. 数据结构:图(Graph)【详解】
  5. WordPress主题分享:The7主题v10.11免费下载 2022年最新版
  6. 《实用C语言编程》读书笔记
  7. android 监听 短信,Android短信验证码监听解决onChange多次调用的方法
  8. 《使命召唤》手游滑铲怎么释放?什么时候使用滑铲更好?
  9. word2CHM,做软件产品必备的说明书工具
  10. 心跳太快对身体带来影响?4种方法来减速!
  11. h5 video 移动端 视频添加第一帧作为播放前图片
  12. Python实现配色自由,展示一下可视化配色方案
  13. Word高版本打开低版本显示兼容模式
  14. C#设计模式——组合模式(Composite Pattern)
  15. java二维数组三种初始化方法(实例)
  16. Linux下的磁盘加密方法
  17. Fliqlo屏保失效无法显示
  18. 建模小白一定要知道的8款软件
  19. JS模拟百度搜索框和选项卡
  20. python numpy报错:VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences

热门文章

  1. 双有源桥(DAB)psim/simulink闭环控制仿真,SPS/DPS/TPS控制均可,图中显示了sps控制的负载阶跃响应全新
  2. 工匠思维胜过激情思维
  3. 360随身WiFi捆绑360云盘
  4. 题目34 众数和中位数
  5. 详解:智能医学影像分析的前沿与挑战
  6. 2023年3月华为HCIA认证新增题库(H12-811)
  7. pyppeteer报错:NoneType‘ object has no attribute ‘goto‘
  8. sklearn中的metrics.roc_auc_score评价指标
  9. vue使用高德api 定位获取位置信息 positionLocation.js及 USERKEY_PLAT_NOMATCH报错
  10. MySQL的卸载与安装