【项目源码】反编译Java字节码生成源码

【项目源码】反编译Java字节码生成源码

文章目录

  • 【项目源码】反编译Java字节码生成源码
      • 参考资料
      • 一、什么是反编译?
      • 二、反编译Java字节码文件
        • [1. (不一定有效) 使用IDEA提供的插件 - Java Bytecode Decomplier](#1. (不一定有效) 使用IDEA提供的插件 - Java Bytecode Decomplier)
        • [2. (推荐) 使用jadx 反编译GUI工具:直接将jar包拖拽进GUI即可](#2. (推荐) 使用jadx 反编译GUI工具:直接将jar包拖拽进GUI即可)
        • [3. (最为推荐)在IDEA上查看源码(`External Libraries`)后,随便查看一个文件,点击`Download Sources`下载源码即可全部下载](#3. (最为推荐)在IDEA上查看源码(External Libraries)后,随便查看一个文件,点击Download Sources下载源码即可全部下载)

参考资料

反编译GUI工具:jadx

IDEA的插件:Java Bytecode Decomplier

IDEA上查看并下载源码

一、什么是反编译?

参考什么是反编译?如何防止反编译?

编译是指将某种编程语言写成的源代码转换成另一种编程语言;反编译是指是将已编译好的程式还原到未编译的状态,也就是找出程序的源代码。不法分子通过对APP反编译,可以推测出APP的算法、原理、结构、逻辑、敏感数据等核心要素,进而达到破解、篡改、广告植入、二次打包、仿冒/钓鱼应用等目的。

二、反编译Java字节码文件

Java文件编译成字节码文件后(一般会打成可执行的jar包),如果要将其反编译主要有三种方法:

1. (不一定有效) 使用IDEA提供的插件 - Java Bytecode Decomplier
复制代码
假设我想反编译`spring-data-elasticsearch-4.4.17.jar`,这里先创建一个空的`data`文件夹,执行命令如下:
java 复制代码
java -cp "D:\programSoftware\IDEA\IntelliJ IDEA 2023.1.5\plugins\java-decompiler\lib\java-decompiler.jar" 
org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true spring-data-elasticsearch-4.4.17.jar data
复制代码
但是这样会报错:
![在这里插入图片描述](https://img-blog.csdnimg.cn/e571625a45f9465d88d8f3cebbb85333.png#pic_center)

报了这个错的原因是:Decompiler has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0,说明java版本太低了(52),得使用最新的java17(61.0)来编译

但是使用了JDK17去反编译,还是会报错:

但如果去反编译其他的jar包(比如spring-data-commons-2.7.17.jar),有时是可以成功的:

2. (推荐) 使用jadx 反编译GUI工具:直接将jar包拖拽进GUI即可
3. (最为推荐)在IDEA上查看源码(External Libraries)后,随便查看一个文件,点击Download Sources下载源码即可全部下载

此时会在相应jar包文件夹下生成一个xxxsource.jar

解压后可以查看其中的源码

相关推荐
程序猿大帅1 小时前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java
程序员晓琪2 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly2 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
众少成多积小致巨3 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
东坡白菜3 小时前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端
SimonKing9 小时前
艹,维护AI写的代码,我心态崩了......
java·后端·程序员
用户298698530149 小时前
Java Word 文档样式进阶:段落与文本背景色设置完全指南
java·后端
小bo波1 天前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
nanxun8862 天前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103512 天前
Day01 | Java 基础(Java SE)
java