晓莲说-何不原创:如何通过jad把class批量反编译成java文件

背景:前几天在项目开发的时候遇到一个问题,那就是利用myeclipse编写好的一个项目打包成jar包后上传部署到服务器里,之后本地的项目被自己改来改去出现了一些问题,想着把上传到服务器里面的war包下载下来重新利用,大家都知道,war包里面的内容解压下来后java文件已经被编译成class文件了,期初用的是一款名为“jd-gui”的工具来反编译,这个很方便,不过缺点是只能一个一个的进行编译,很费时间,不能批处理。于是经过度娘与自己的摸索,利用jad完全可以做到(上面不重要,下面才是重点)。

Jd_gui网盘下载地址:http://pan.baidu.com/s/1skSxgDn(不想批处理的可以直接下载这个)

点击文件(file)中的save Source保存即可

 

Jad官网下载地址:http://www.varaneckas.com/jad按照自己的电脑系统下载

我用的是windows,如下图:

 

 

Java jad下载下来解压后有两个文件,一个exe文件和一个帮助文件,为了方便使用,我直接将exe文件放到JDK的bin目录里,这样做是为了能够执行exe文件(不用再环境变量里面配置),至于如何配置,我会在下一篇文章进行介绍。

放在jdkde bin目录后,我们打开cmd(快捷键:windows+R,输入cmd):

 

 

 

点击确定即可。

然后在里面输入:jad.exe -r -d c:\src -s java -8 c:\classes\**\*.class

其中-r 表示恢复源文件的目录结构,,-ff 表示将类属性定义放在类方法定义之前, -d 表示输出目录,-s 表示文件的扩展名 -8表示防止乱码问题,c:src表示把编译好的class文件存放在C盘上的src文件夹里面并且存放在对应位置,

c:\classes\**\*.class表示把位于C盘的classes文件夹中的所有class文件都反编译成java文件

 然后回车,你会发现一个很奇怪的现象,

 

No matching files found 表示找不到指定的文件,这是因为如果你电脑上面的c盘子文件下没有src这个文件夹,而且也没有对应目录需要执行的classes文件,所以会报错,很正常的啦。

 

举个例子,首先得在c盘的目录下创建一个src(可以自定义,不过为了方便我们以放在C盘为例)

 

 

然后在根目录下(就是与src同目录)把需要反编译的classes文件拷贝过来(包括所有子文件)。

 

 

这个classes就是我们想反编译的所有class文件,然后再执行这条语句,你会发现一大串英文。类似这样的。

 

这就代表编译成功,然后就可以在src里面看到class已经编译成java然后保存到相应的文件夹里面了

 

 

 

希望对你能有帮助。

转载于:https://www.cnblogs.com/BK-xiatian/p/7449715.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我是一名语言模型AI助手,无法操作您所的“class批量反编译java”操作,但是可以为您提供相关信息。 Java中的class文件Java源代码编译生的字节码文件反编译class文件可以将其转换回Java源代码。有许多工具可以用于反编译class文件,例如Java Decompiler、JD-GUI、JAD等。这些工具可以将单个class文件反编译Java源代码,但无法批量处理。 如果您需要批量反编译class文件,可以使用脚本编程语言(例如Python)编写脚本来自动化处理。通过脚本,您可以遍历目录中的所有class文件,并将它们转换为Java源代码。以下是一个Python脚本示例: ```python import os import subprocess def decompile_class_file(class_file_path): """ 反编译单个class文件 """ output_path = class_file_path.replace('.class', '.java') cmd = f"javap -c -p -s -verbose -l {class_file_path}" with open(output_path, 'w') as f: subprocess.call(cmd, stdout=f) def decompile_all_class_files(directory): """ 反编译目录下所有class文件 """ for root, dirs, files in os.walk(directory): for file in files: if file.endswith('.class'): file_path = os.path.join(root, file) decompile_class_file(file_path) if __name__ == '__main__': decompile_all_class_files('/path/to/directory') ``` 此脚本使用javap命令反编译class文件,并将其输出为Java文件。您可以将此脚本保存为.py文件,然后在命令行中运行它,以批量反编译目录中的所有class文件。请确保在运行脚本之前,您已经安装了Java开发工具包(JDK)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值