java的class文件批量反编译成java

近来刚做完项目闲来无事就研究起了反编译,之前做一个orc识别vin码功能在度娘出来的全是那几家公司在做广告,后在在公司数据破解的同事帮助下弄了个apk过来。反编译看看是怎么实现的,后面反编译出来看到是调用so库来实现识别的,就没有继续研究了,在此做个记录。好记性不如烂笔头嘛。。。

class文件是java文件编译后产生的一个文件,class文件便于在软件上运行,但是我们无法阅读中间的程序,所以我们需要将class文件转换成java文件。

1.首先要个工具:

jad.exe 要的可以到这里找需要的下载(点击打开链接

1.使用win+R快捷键,打开“运行”界面。


2.输入cmd,打开命令窗口。


3.因为我的jad.exe软件在D盘里,所以我需要先转换到D盘,输入D:再按enter键进入D盘。


4.因为我的jad.exe在D:\java\jad158g.win里面,所以我输入cd D:\java\jad158g.win进入jad文件夹里面。


5.接着就是找到自己要转换的class文件所在的位置,将这个文件复制到jad.exe所在的文件夹下。


6.然后输入如下示的命令再按下enter键,就可以开始转换了。

转换批量转换就可以了:

例如:将需要反编译的多个文件放在指定路径下。为了方便操作,我将文件放在D盘目录下的classes_dex2jar文件夹中。打开运行--->输入cmd--->输入cd c:/,将路径指到C盘根路径下。

   再输入编译命令,命令:jad -o -r -s java -d src classes_dex2jar/**/*.class 

 

就能在根目录下发现是src的文件夹,里面都是反编译后的java源文件(马赛克的文件夹忽略,是我之前测试的)。


然后对比下转换前和转换后的文件夹:

转换前(由于这个文件时已上线的项目破解后反编译的所以就马赛克下啦):


转换后的文件:


这就OK啦,批量转换!还有什么不懂得可以留言问,我有空会解答。

   jad命令的参数含义如下:
       -o:覆盖旧文件,而且不用提示确认。
       -r:重新加载生成包结构。
       -s (java):定义输出文件的扩展名。jad为默认扩展名,我们反编译后当然是要.java源文件了。
       -d:输出文件的目录。src表示反编译后的所有文件都放在src目录下。
       classes/**/*.classclasses是需要反编译的文件夹的名字,整个表示classes目录下的所有class文件。你也可以写成这样**/*.class,这表示当前目录及其子目录下所有的class文件(包含所有的子目录)。

参考连接:

class转java

java的class批量反编译



  • 30
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
很抱歉,我是一名语言模型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)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值