【项目源码】反编译Java字节码生成源码
参考资料
反编译GUI工具:jadx
- 最好的java反编译工具是哪个? - JavaGuide的回答 - 知乎
- jadx Github开源项目地址
IDEA的插件:Java Bytecode Decomplier
- IDEA反编译出整个jar包源码
- IDEA 反编译出整个Jar包源码
- IDEA—使用插件反编译jar包
IDEA上查看并下载源码
一、什么是反编译?
参考什么是反编译?如何防止反编译?
编译是指将某种编程语言写成的源代码转换成另一种编程语言;反编译是指是将已编译好的程式还原到未编译的状态,也就是找出程序的源代码。不法分子通过对APP反编译,可以推测出APP的算法、原理、结构、逻辑、敏感数据等核心要素,进而达到破解、篡改、广告植入、二次打包、仿冒/钓鱼应用等目的。
二、反编译Java字节码文件
Java文件编译成字节码文件后(一般会打成可执行的jar
包),如果要将其反编译主要有三种方法:
1. (不一定有效) 使用IDEA提供的插件 - Java Bytecode Decomplier
假设我想反编译`spring-data-elasticsearch-4.4.17.jar`,这里先创建一个空的`data`文件夹,执行命令如下:
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
但是这样会报错:
报了这个错的原因是: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即可
文章来源:https://www.toymoban.com/news/detail-744234.html
3. (最为推荐)在IDEA上查看源码(External Libraries
)后,随便查看一个文件,点击Download Sources
下载源码即可全部下载
此时会在相应jar包文件夹下生成一个xxxsource.jar
解压后可以查看其中的源码
文章来源地址https://www.toymoban.com/news/detail-744234.html
到了这里,关于【项目源码】反编译Java字节码生成源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!