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

news2024/11/28 17:43:55

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

文章目录

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

参考资料

反编译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
但是这样会报错:
![在这里插入图片描述](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
在这里插入图片描述
解压后可以查看其中的源码
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络性能瓶颈分析,让我来说给你听!

在性能测试中,谈到网络问题,其实,在没有特别说明的情况下,我们一般讲的都是 HTTP 协议下的网络瓶颈问题,那,对于这个问题,我们如何来分析呢?计算机中的网络,跟我们现实生…

ESP32S3入手体验测试

ESP32S3入手体验测试 🔖所入手的型号是YD-ESP32-S3 N16R8,该款和乐鑫官方推出的ESP32-S3-DevKitC-1配置差不多。 🎈乐鑫官方介绍:ESP32-S3-DevKitC-1 v1.1 🔰两者采用的模组:ESP32-S3-WROOM-1 和ESP32-S3-WROOM-1U模组…

再见了,提示~ 谷歌发布自适应提示方法,从此告别提示工程!

夕小瑶科技说 原创 作者 | 谢年年、ZenMoore 大模型虽好,但却存在着一个恼人的问题:大模型回答得好不好,取决于我们问题问得怎么样。一个好的、详细的问题往往可以产生惊人的效果... 所以... ChatGPT 问世之后,最火的书可能不是…

文心一言 VS 讯飞星火 VS chatgpt (128)-- 算法导论11.1 3题

三、用go语言,试说明如何实现一个直接寻址表,表中各元素的关键字不必都不相同,且各元素可以有卫星数据。所有三种字典操作(INSERT、DELETE和SEARCH)的运行时间应为O(1)(不要忘记 DELETE 要处理的是被删除对象的指针变量,而不是关键…

没想到这么齐全!这份 Python 实战干货yyds

今天我分享一些Python学习神器资料,有需要的小伙文末自行免费领取。 1.200Python练手案例: 2.Python全套视频教程等: 3.浙大Python学习套装: * 4.Python实战案例: 5.Pandas学习大礼包 6.学习手册大礼包 Python知识…

cocosCreator微信小游戏 之 登录流程(三)

creator版本: 3.8.0 语言: TypeScript 环境: Mac 流程 微信小游戏在微信平台中运行,第一步操作就是登录。在登录之后才能: 更方便的获取微信提供的用户身份标识更方便的验证数据传递的合法性 在微信平台中&#x…

如何在苹果Mac系统设置中查看Wi-Fi密码?

在 Mac 上查找保存的 Wi-Fi 密码的最简单方法之一是从系统设置内的高级 Wi-Fi 首选项页面。您可以通过下面的方式访问此页面来查找您保存的 Wi-Fi 密码。 1.在 Mac 上,选取「苹果菜单」选择「系统设置」。 2.从侧边栏中选择「Wi-Fi」,单击「高级」。 3.…

Git同时配置Gitee和GitHub

Git同时配置Gitee和GitHub 一、删除原先ssh密钥二、生成密钥 这里的同时配置是针对于之前配置过单个gitee或者github而言的,如果需要看git从安装开始的配置,则可以看这一篇文章 git安装配置教程 一、删除原先ssh密钥 在C盘下用户/用户名/.ssh文件下找到…

golang实现极简todolist

ToDoList 最近跟着qimi老师做了一个ToDoList,我做的GitHub地址贴在这里,但由于前端出了点问题,所以都是用postman进行测试 原项目地址 部分功能展示 删除代办 查找代办 下面给出思路 思路 其实这是一个很简单的增删改查的实现&#xff…

Linux命令--mkdir创建目录的方法

原文网址&#xff1a;Linux命令--mkdir创建目录的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Linux创建目录命令--mkdir的用法。 格式 mkdir [选项] 目录… -m, –mode模式&#xff0c;设定权限<模式> (类似 chmod)&#xff0c;而不是 rwxrwxrwx 减 umask-p, --p…

【java学习—十三】处理流之二:转换流(2)

文章目录 1. 相关概念2. 转换输入流3. 转换输出流 1. 相关概念 转换流提供了在字节流和字符流之间的转换。 Java API 提供了两个转换流&#xff1a;     InputStreamReader 和 OutputStreamWriter     当字节流中的数据都是字符时&#xff0c;转成字符流操作更高效。…

Python---字符串中的查找方法--rfind()与rindex()方法----括号里是要获取的字符串

r right&#xff0c;代表从右开始查找 基本语法&#xff1a; 字符串序列.rfind(子串) 字符串序列.rindex(子串) 强调&#xff1a; rfind()方法 与 rindex()方法 适合于查找子串在字符串中出现了多次的情况 rfind()方法 案例&#xff1a; 有一个文件名称叫20210310…

深度学习之基于Tensorflow卷积神经网络花卉识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习是一种机器学习方法&#xff0c;它通过模拟人脑神经网络的结构和功能来实现对数据的自动分析和学习。卷积神…

差生文具多之(一)eBPF

前言 在问题排查过程中, 通常包含: 整体观测, 数据采集, 数据分析这几个阶段. 对于简单问题的排查, 可以跳过前两个步骤, 无需额外收集数据, 直接通过分析日志中的关键信息就可以定位根因; 而对于复杂问题的排查, 为了对应用的行为有更完整的了解, 可以通过以下形式收集更多的…

程序员成长树

- 10年以后我在做什么&#xff1f; 成为项目负责人&#xff08;管理事、管理人&#xff09; - 如何处理同事的关系: 平时生活中最简单的一句问候&#xff0c;闲暇时间的聊天了解&#xff0c;互帮互助 - miss yang: - 1、软件UI设计 - 2、需求分析 - 3、协调推进任务的安排 …

linux 驱动——字符设备驱动(自动生成设备节点文件)

文章目录 字符设备驱动字符设备 APP生成 dev 节点的原理配置内核自动创建设备节点模块使用 字符设备驱动 #include "linux/device/class.h" #include "linux/export.h" #include "linux/uaccess.h" #include <linux/types.h> #include &l…

10 DETR 论文精读【论文精读】End-to-End Object Detection with Transformers

DETR 这篇论文&#xff0c;大家为什么喜欢它&#xff1f;为什么大家说它是一个目标检测里的里程碑式的工作&#xff1f;而且为什么说它是一个全新的架构&#xff1f; 大家好&#xff0c;今天我们来讲一篇 ECC V20 的关于目标检测的论文。它的名字想必大家都不陌生&#xff0c;也…

Python---字符串中的查找方法--index()--括号里是要获取的字符串

index()方法其功能与find()方法完全一致&#xff0c;唯一的区别在于当要查找的子串没有出现在字符串中时&#xff0c;find()方法返回-1&#xff0c;而index()方法则直接 报错。 find()方法相关链接&#xff1a;Python---字符串中的查找方法--find&#xff08;&#xff09;--括…

排序——冒泡排序

冒泡排序的基本思想 从前往后&#xff08;或从后往前&#xff09;两两比较相邻元素的值&#xff0c;若为逆序&#xff08;即 A [ i − 1 ] < A [ i ] A\left [ i-1\right ]<A\left [ i\right ] A[i−1]<A[i]&#xff09;&#xff0c;则交换它们&#xff0c;直到序列…

【漏洞复现】Nginx_(背锅)解析漏洞复现

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、深度利用GetShell 1.1、漏洞描述 这个漏洞其实和代码执行没有太大关系&…