jar的反编译为java文件

目录

1、cfr工具下载

2、反编译指令

3、反编译说明


1、cfr工具下载

        反编译插件工具比较多,但是我认为最好用的工具为cfr,基本能解决所有jar包,下载地址为:cfr官网

         点击图中位置下载即可

2、反编译指令

        来到你下载完成cfr目录下,在地址栏输入cmd,进入到控制台,输入下面的指令,即可完成jar的反编译

java -jar cfr-0.153-SNAPSHOT.jar "D:\work\all Jars\compilerClassfileByljy\md_common_api.jar" --outputdir "D:\work\all Jars\compilerClassfileByljy\compilered"

        上面指令我使用的是0.153版本,注意自己下载的cfr的全称,以及参数的设置

3、反编译说明

        反编译完成后,会得到反编译后的java文件,当未被混搅的jar反编译出来一般问题都不大,基本上会存在类型擦除的问题,即变量的类型定义不符合,我一般的更改,是将当前的变量删除,使用快捷键的方式生成变量名和变量类型,此外还要解读上下文,进行参考更改。

        如果反编译的jar包是采用了混搅后,那么得到java文件可读性比较低,类名一般都为a、b、c等这样的字母代替,当然此时代码中仍然存在大量的类型擦除问题,此时的更改就要自己慢慢琢磨总结了。

        本身反编译就不是一个很靠谱的东西,只能说编程时是对别人源码的参考,直接拿来用是不太严谨的,也是对别人源码的盗窃。

        详细可以参考这篇博客:博客地址

学习之所以会想睡觉,是因为那是梦开始的地方。
ଘ(੭ˊᵕˋ)੭ (开心) ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)
                                                                                                        ------不写代码不会凸的小刘

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用IntelliJ IDEA将整个JAR反编译Java代码,可以按照以下步骤操作: 1. 在IntelliJ IDEA中打开一个新项目。 2. 将JAR包复制到项目的根目录下。 3. 在项目根目录下创建一个新的文件夹,用于存放反编译后的Java代码。 4. 在IntelliJ IDEA的菜单栏中,选择File -> Project Structure。 5. 在Project Structure对话框中,选择Modules,然后点击加号图标,选择“Import JAR or AAR Package”选项。 6. 选择要反编译JAR包,然后点击“OK”按钮。 7. 在Modules列表中,找到导入的JAR包,并将其展开。 8. 右键点击“src”文件夹,选择“New” -> “Directory”,并创建一个新的文件夹,用于存放反编译后的Java代码。 9. 右键点击刚刚创建的文件夹,选择“New” -> “Java Class”,并创建一个新的Java类。 10. 在新的Java类中,输入以下代码: ``` public static void main(String[] args) throws IOException { String jarFilePath = "path/to/jar/file.jar"; // 替换为实际的JAR文件路径 String outputDirPath = "path/to/output/dir"; // 替换为实际的输出目录路径 try (JarFile jarFile = new JarFile(jarFilePath)) { Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry entry = entries.nextElement(); if (!entry.isDirectory()) { File outputFile = new File(outputDirPath, entry.getName()); outputFile.getParentFile().mkdirs(); try (InputStream input = jarFile.getInputStream(entry); OutputStream output = new FileOutputStream(outputFile)) { byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = input.read(buffer)) != -1) { output.write(buffer, 0, bytesRead); } } } } } } ``` 11. 替换代码中的“jarFilePath”和“outputDirPath”为实际的JAR文件路径和输出目录路径。 12. 运行该Java类,IntelliJ IDEA会将JAR包中的所有class文件反编译Java代码,并保存到指定的输出目录中。 注意:反编译后的Java代码可能不完整或有误,这取决于JAR包中的class文件是否被混淆等因素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值