美文网首页程序员工具癖
用jad做一个快乐的java代码阅读师

用jad做一个快乐的java代码阅读师

作者: cleanup123 | 来源:发表于2019-03-03 18:42 被阅读10次

对于我们大多数java代码的开发者,阅读已经编译好的class文件是我们经常要做的事情。最常见的方法无外乎使用IDE(eclipse、idea)自带的反编译功能。

那如果在没有源码的情况下需要对class文件批量反编译需要如何做呢?

1、使用jad-gui。这对于少量代码是可行的,通常来讲一个jar包中的代码量可不是”少量“的。如下图,如果使用jad-gui,导出整个jar包的内容需要手工创建多个java文件,以及目录层级,这显然不是可以用人工去做的。

jad-gui.png

2、就是使用我们今天的主角jad。下面我就来为大家仔细的说明一下jad的使用方法。


jad.png

以下是jad工具的使用命令

jad命令详解.png

那么下面给大家讲解一下常用的常规操作
安装配置

下载好jad(https://varaneckas.com/jad/)之后。给jad.exe配置环境变量或者将jad.exe放到C:\Windows\System32目录下。通过cmd命令进入windows命令窗口模式。

我们现在通过反编译来获取druid-1.1.10的代码。
1.先将jar包用解压工具解压。
2.找到需要反编译的代码存放路径。
3.拼写命令,执行。

jad -o -r -sjava -dsrc druid-1.1.10/com/alibaba/druid/**/*.class

参数含义:
-o 无需确认直接覆盖输出
-r 恢复包的目录结构
-sjava 指定输出文件的类型java
-dsrc 指定输出文件的文件目录
**代表多级目录层级
*代表任意文件名

需要注意的是命令后的路径,(druid-1.1.10/com/alibaba/druid/*/.class)是相对地址。

反编译命令.png

执行完成之后大家就可以在当前目录下得到一个src文件夹,反编译出来的代码都在里边了。


值得注意的是jad并不是万能的,以下情况是无法正常的反编译出来的。遇到这些情况就需要使用多种反编译工具综合分析了。

1.包含有内部类,则jad处理构造函数的参数时会出错。
2.不支持zip和jar包。(注:如果使用Eclipse插件,则很容易得到包中的某个类的反编译代码)。
3.当有标签块,嵌套循环中有break/continue,有goto语句的时候,会提示信息“Couldn't fully decompile method <name>”;
当有try-catch-finally语句的时候会提示信息“Couldn't resolve all exception handlers in method <name>”。

  1. Currently Jad ignores the contents of the Line Number Table Attribute and the Source File Attribute。
    5.JAD不能处理继承信息,总是把java.lang.Object作为两个不同类的通用父类,需要的时候做强制转换。
    6.jad对inlined functions处理不好。

二维码.png

相关文章

  • 用jad做一个快乐的java代码阅读师

    对于我们大多数java代码的开发者,阅读已经编译好的class文件是我们经常要做的事情。最常见的方法无外乎使用ID...

  • JAVA语法糖

    反编译工具 JAD:jad -sjava Test.class 反编译结果为Java源代码或 jad --sour...

  • kuaidui作业sign逆向及unidbg实现

    kuaidui作业sign逆向及unidbg实现 Java层 apk用frida_dump脱壳后,重新打包,jad...

  • Jad java反编译指令

    This is README file for Jad - the fast Java Decompiler. J...

  • java反编译工具

    介绍 Java 反编译工具有很多种,以下介绍其中一些工具 jad jad 是一款使用非常广泛地 Java 反编译工...

  • Java-Java反编译工具

    一、旧Java反编译工具 JAD JD 二、新Java反编译工具 Fernflower Procyon CFR 简...

  • jad使用

    [1] 反编译一个class文件:jad example.class,会生成example.jad,用文本编辑器打...

  • 代码重构那些事儿

    大家好,这是我今天演讲的目录,分Java,JavaScript,ABAP三门编程语言来讲述。 Java •JAD•...

  • Java Jad 反编译

    下载运行文件 https://varaneckas.com/jad/ 添加环境变量,dos命令反编译class文件...

  • Arthas使用

    1.代码热修复:jad --source-only com.test.demo.dmp.constant.DmpC...

网友评论

    本文标题:用jad做一个快乐的java代码阅读师

    本文链接:https://www.haomeiwen.com/subject/ggdmuqtx.html