java-decompiler批量反解译jar包

该脚本演示了如何在Linux环境下利用IDEA的java-decompiler插件,将JAR文件批量转换为源代码。首先,确保环境变量中的Java指向IDEA内置的JDK,然后遍历指定目录下的所有JAR文件,使用ConsoleDecompiler进行反编译,并将结果保存到特定目录。转换完成后,会删除原始JAR文件,并创建源代码目录结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要是使用IDEA的插件包java-decompiler.ja进行批量的转换。

注意:由于插件使用的java环境是idea自带的jdk版本,则环境变量中的java需要配置成idea自带的jdk版本,对应的目录为 /opt/dep/idea-IU-223.8836.41/jbr

#!/bin/bash
# by liuchao


_work_path=$(pwd)/lib

#创建临时文件
$(> temp.txt)

for file in ${_work_path}/*.jar
do
# 提取目录下的文件、目录的名称,拼接删除命令    
  if test -f $file
  then
      echo $file"--->"${file##*/}
      _file_name=${file##*/}
      java -cp "/opt/dep/idea-IU-223.8836.41/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true $file /opt/dep/srcs/
      # 解压转换后的jar包
      if test -f "/opt/dep/srcs/$_file_name"; then
          # 创建目录
          rm -rf /opt/dep/srcs/$_file_name.src
          mkdir /opt/dep/srcs/$_file_name.src
          # 解压
          unzip -q -d /opt/dep/srcs/$_file_name.src /opt/dep/srcs/$_file_name
          # 删除jar包
          rm -rf /opt/dep/srcs/$_file_name
      fi
      echo -n $file >> temp.txt
  else
      echo "目录不做任何处理!"
  fi
done

# java -cp "/opt/dep/idea-IU-223.8836.41/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true /opt/dep/lib/service-model-10.2.1-20429.jar /opt/dep/srcs/


在这里插入图片描述

转换后的结果

在这里插入图片描述
参考文章:IDEA—使用插件反编译jar包

### Java 编译方法与工具 Java 编译是一种将已编译的 `.class` 文件还原为接近原始源代码的技术。以下是关于 Java 编译的相关介绍以及常用工具: #### 常见的 Java 编译工具 1. **JAD (Java Decompiler)** JAD 是一款经典且功能强大的编译工具,能够高效地将 Java 字节码文件(`.class` 文件)转换成可读的 Java 源代码[^1]。它支持命令行操作,适合熟悉终端环境的开发者。 2. **UuDeJava** UuDeJava 是另一款基于 JAD 的图形化编译工具。它的特点是简单易用,可以快速解译 `.class` 文件并将其保存到指定目录中。通过关联 `.class` 文件或拖放操作即可完成编译工作[^2]。 3. **JD-GUI** JD-GUI 是现代常用的可视化 Java 编译器之一。相比传统的命令行工具,JD-GUI 提供了更友好的界面体验,允许用户轻松浏览和导出编译后的代码。其优点在于速度快、兼容性强,并能处理复杂的项目结构。 4. **CFR (Class File Reader)** CFR 是一种开源的 Java 编译工具,以其高精度著称。它可以生成更加贴近原生语法风格的代码片段,在某些情况下甚至优于其他商业产品。此外,CFR 支持多种编码格式输出,满足不同需求场景下的应用开发人员偏好。 5. **Procyon** Procyon 不仅是一个优秀的 Java 解析库,同时也具备出色的汇编能力。对于那些希望获得更高灵活性的人来说,这是一个不错的选择;因为它不仅限于简单的 GUI 功能展示,还提供了 API 接口以便集成至自动化流程当中去实现批量处理等功能扩展可能性更大一些。 #### 如何进行 Java 编译? 要执行基本的 Java 编译过程,可以选择上述提到的各种工具中的任意一种来完成任务。下面以 JD-GUI 为例说明具体步骤: ```bash # 打开 JD-GUI 应用程序 jd-gui & # 加载目标 .class 文件或者整个 jar 进入软件窗口内 File -> Open... # 查看编译结果后如果满意则点击 Export Sources 导出所有文件夹下对应的 java 文件副本存档备用。 ``` 以上就是有关如何利用特定软件来进行标准意义上的java decompilation operation 的指导信息[^3]。 ```python import subprocess def run_jad_decompiler(class_file_path, output_dir): """ 使用 JAD 工具对 class 文件进行编译 """ try: result = subprocess.run(['jad', '-o', '-d', output_dir, class_file_path], check=True) print(f"Successfully decompiled {class_file_path} to {output_dir}") except Exception as e: print(e) # 示例调用 run_jad_decompiler('example.class', './decompiled_output') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值