详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)

详解JDK自带javap命令反编译class文件和Jad反编译class文件

什么是javap命令和Jad反编译?

  • javap命令是JDK自带的反编译工具,用于反编译class文件。
  • Jad是一款免费的Java反编译器,可以将class文件反编译为Java源代码。

使用javap命令反编译class文件

  1. 打开命令行工具,进入.class文件所在的目录。
  2. 键入javap -c -p classfile,其中classfile为需要反编译的.class文件名。
  3. -c表示反编译代码时显示代码中的所有指令。
  4. -p表示反编译代码时显示代码中的所有类和成员变量名以及修饰符。
  5. 查看输出结果,即为反编译后的代码。

示例:

$ javap -c -p MyClass.class
Compiled from "MyClass.java"
public class MyClass {
  public static void main(java.lang.String[]);
    Code:
       0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3                  // String Hello World!
       5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return
}

使用Jad反编译class文件

  1. 下载Jad,并放在合适的位置(比如C:\jad下)。
  2. 将.class文件复制到Jad所在的目录下(比如C:\jad)。
  3. 打开命令行工具,进入Jad所在目录。
  4. 键入jad -sjava classfile,其中classfile为需要反编译的.class文件名。
  5. -sjava表示将反编译结果输出到一个.java文件中。
  6. 查看输出结果,即为反编译后的代码。

示例:

$ jad -sjava MyClass.class
Parsing MyClass.class...Generating MyClass.java

反编译后的文件MyClass.java内容:

public class MyClass
{
    public static void main(String args[])
    {
        System.out.println("Hello World!");
    }
}

总结

Javap和Jad都是Java反编译的利器,使用简单方便,并且效果好。其中,Jad还支持反编译多个class文件,并可以将整个目录下的.class文件全部反编译。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 关于log4j漏洞修复解决方案及源码编译

    关于log4j漏洞修复解决方案及源码编译,我会给出下面的完整攻略。 1. 了解Log4j漏洞 最近,Log4j2.0这个常用的Java日志框架出现了一个安全漏洞,攻击者可以通过构造恶意代码的方式,远程执行任意命令。此漏洞受到了国内外广泛关注,因此及时修复这个漏洞变得尤为必要。 2. 解决方案 下面就是在Windows环境下解决这个问题的步骤。 2.1 检查是…

    Java 2023年5月19日
    00
  • Spring2.5.6开发环境搭建图文教程

    Spring2.5.6开发环境搭建图文教程 简介 在进行Spring 2.5.6开发时,需要先搭建好相应的开发环境。本文将详细介绍如何搭建Spring 2.5.6开发环境,供初学者参考。 系统要求 JDK 1.6及以上版本 Eclipse IDE for Java EE Developers V3.3 或以上版本 Spring Framework 2.5.6…

    Java 2023年5月19日
    00
  • 将properties文件的配置设置为整个Web应用的全局变量实现方法

    将properties文件的配置设置为整个Web应用的全局变量实现方法可以采用ServletContextListener监听器实现。 实现步骤如下: 创建一个Properties文件,例如config.properties,用于存储Web应用的配置信息。该文件的格式类似于以下示例: database.driver=com.mysql.jdbc.Driver…

    Java 2023年6月15日
    00
  • java生成抽样随机数的多种算法

    Java生成抽样随机数的多种算法 在Java中生成抽样随机数,可以使用多种算法。下面将介绍一些常用的方法和示例说明。 1. Math.random方法 Math.random方法是Java中最基本的生成随机数的方法。它返回一个[0,1)之间的double类型的随机数。如果我们要生成一个[a,b]之间的随机数,可以使用下面的公式: double randomN…

    Java 2023年5月19日
    00
  • Spring Boot整合Spring Data JPA过程解析

    下面我会详细讲解“Spring Boot整合Spring Data JPA”的攻略,包括搭建环境、配置文件、实体类、DAO接口、Service接口和Controller等内容。并附加两个示例供您参考。 环境搭建 首先,你需要在Maven项目中添加以下依赖: <dependencies> <!–Spring Boot Web Starter…

    Java 2023年5月19日
    00
  • Java Hibernate使用SessionFactory创建Session案例详解

    下面是详细讲解“Java Hibernate使用SessionFactory创建Session案例详解”的攻略,包括了相关的示例代码。 什么是SessionFactory? SessionFactory是Hibernate框架中一个重要的接口,用来创建Session。在使用Hibernate进行开发时,我们通常都会使用SessionFactory来获取一个S…

    Java 2023年5月19日
    00
  • JavaSpringBoot报错“DataAccessException”的原因和处理方法

    原因 “DataAccessException” 错误通常是以下原因引起的: 数据库连接问题:如果您的数据库连接存在问题,则可能会出现此错误。在这种情况下,您需要检查您的数据库连接并确保它们正确。 SQL 语句问题:如果您的 SQL 语句存在问题,则可能会出现此错误。在这种情况下,您需要检查您的 SQL 语句并确保它们正确。 数据库访问权限问题:如果您的数据…

    Java 2023年5月4日
    00
  • Hibernate实现悲观锁和乐观锁代码介绍

    关于Hibernate实现悲观锁和乐观锁的代码介绍,我们可以分别针对不同的锁机制进行讲解。 一、悲观锁 悲观锁机制在操作数据的时候会先将数据锁定,避免其他线程对该数据的访问和修改。Hibernate提供了两种方式实现悲观锁:使用数据库相关功能实现和使用Hibernate API实现。 1.使用数据库相关功能实现悲观锁 需要在sql语句中使用 for upda…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部