【IDEA】告别繁琐反编译:IDEA中轻松反编译与修改Jar包

news/2024/11/8 18:50:02/文章来源:https://www.cnblogs.com/o-O-oO/p/18535678

本文带你了解 JarEditor 插件的强大功能,它让你无语再用其他第三方工具,也无需解压 JAR 文件就能直接在IDEA中编辑其中的类和资源文件。还能用它轻松添加、删除或重命名 JAR 包里的文件。即使遇到混淆过的 JAR,JarEditor 也能通过 Javassist 工具搞定。

支持的功能

JarEditor 提供了丰富的功能,尤其是对于开发者日常操作 JAR 文件时非常有用的特性:

• 直接编辑 JAR 包内的类和资源文件:无需将 JAR 文件解压缩,支持对其中的类(.class 文件)和资源文件直接进行编辑。• 添加、删除或重命名 JAR 包内的文件和文件夹:简化了对 JAR 包内容的管理。• 搜索 JAR 包的内容:通过关键字快速定位 JAR 包中的文件或类。• JAR 内部文件的复制与粘贴:支持将 JAR 包中的文件复制到外部剪贴板,也支持从剪贴板粘贴文件到 JAR 包内。• 支持 SpringBoot JAR:可以处理 SpringBoot 打包的 JAR 文件。• 支持 Kotlin:除了 Java,JarEditor 也支持 Kotlin 的类和文件操作。• 导出 source JAR:可以直接将 JAR 文件的源码导出为 source JAR。• 字节码修改工具:通过集成的 Javassist 工具,支持直接修改 .class 文件的字节码。

下载安装

GitHub地址:https://github.com/Liubsyy/JarEditor

JetBrains Plugins地址:https://plugins.jetbrains.com/plugin/24397-jareditor

你可以通过搜索并安装 JarEditor 插件来开始使用。以下是安装完成后的界面:

编辑并构建 JAR

安装完 JarEditor 后,右键点击项目中的 .class 文件,在反编译界面可以切换到 JarEditor 的 tab 页面,方便对 JAR 文件进行编辑。

对于外部 JAR 文件,可以通过 File ⏩ Project Structure ⏩ Libraries ⏩ Add Library 来添加外部 JAR,并在项目视图中对其进行反编译和编辑操作。

编辑完成后,可以点击Save(Compile)来编译并保存当前修改的类文件。完成编辑后,点击Build JAR,生成修改后的 JAR 文件。

此外,JarEditor 还支持修改 JAR 包中的资源文件(例如图片、配置文件等)。

以下是一个编辑和构建 JAR 的操作演示:

修改字节码工具

当面对经过混淆处理的 JAR 文件时,反编译效果可能不理想。在这种情况下,JarEditor 提供了字节码修改工具来直接操作 .class 文件的字节码。

点击工具栏上的 Class bytes tool 图标,选择字节码修改工具:

• Javassist:可以对类中的字段和方法进行增加、删除或修改。

以下是操作界面:

其他操作

在项目视图中,右键点击 JAR 包内的文件,可以看到JarEditor ⏩ New/Delete等操作,支持:

• 在 JAR 包中添加文件或文件夹。• 删除 JAR 包中的文件或文件夹。• 重新命名 JAR 包内的文件或文件夹。• 将文件从 JAR 包导出。

以下是操作界面:

说明

在使用 JarEditor 进行编译时,建议选择与当前 IDEA 版本匹配的 SDK 默认 JDK 版本。以下是不同版本 IDEA 对应的 JDK:

确保选择正确的 JDK 版本,以避免编译或运行时的兼容性问题。

原创 编程与架构

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[极客大挑战 2019]BuyFlag 1

[极客大挑战 2019]BuyFlag 1 打开实例发现pay.php页面,有提示信息打开源码发现password post提交逻辑burpsuite抓包传参,传入money和password参数,这里password是==弱比较,所以加个字符就可以绕过 password=404a&money=100000000回显发现并没有变化 注意到学生需要CUIT(…

写什么代码来清空缓冲区

在 C++ 中,清空输入缓冲区的方法主要用于清除 std::cin 输入流中的残留字符,避免它们影响后续的输入操作。下面介绍几种常用的办法。 1. cin.ignore() 方法 cin.ignore() 是最常用的清空缓冲区方法,可以忽略输入流中的若干字符。cin.ignore(numeric_limits<streamsize>…

[ACTF2020 新生赛]BackupFile 1

[ACTF2020 新生赛]BackupFile 1 打开实例,显示Try to find out source file!(尝试找出源文件!)dirsearch扫描,发现flag页面以及备份文件泄露wget下载并打开index.php.bak,发现flag.php的源码这边要求参数key为数值的同时又要==123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w…

【架构】异地多活架构设计

一、关于基础架构二、关于异地多活三、写时延是关键3.1 核心在于数据层的写操作3.2 写时延在跨城时发生质变3.3 同步复制缩短距离降目标3.4 异步复制就近分片做有损四、写量大拆分片五、做隔离拆分片六、其他影响因素6.1 读时延可就近6.2 读量大扩副本6.3 连接多加代理七、数据…

1.11--04:网线主管

http://noi.openjudge.cn/ch0111/04/网线主管 思路题目要求保留小数点后两位,说明啥,如果我们要循环找答案,每次只能+0.01,不然容易错过答案,看这个数据范围,一看就炸了考虑到二分怎么分?众所周知,二分的前提条件是内容必须有一定的规律如果当前导线和除以中间长度(我们…

【MySQL】数据库备份详解

一、引言1.1 数据库备份的重要性二、MySQL数据库备份的基础知识2.1 备份类型2.2 备份工具与方法三、MySQL数据库备份的实施步骤3.1 环境准备3.2 选择合适的备份工具与方法3.3 执行备份3.4 验证备份3.5 存储与管理备份四、MySQL数据库恢复流程4.1 mysqldump备份的恢复4.2 物理备…

关于虚拟仿真云实验教学_解决方案及优势介绍!

在科技飞速演进的潮流下,虚拟仿真技术正不断蓬勃发展,成为教育领域的一颗耀眼之星。作为创新的教育手段,虚拟仿真云教学正逐渐受到越来越多教育机构的高度重视与广泛应用,本文将为您详细探讨虚拟仿真云实验教学的解决方案及其所带来的多重优势。在科技飞速演进的潮流下,虚…

08C++选择结构(2)——教学

一、逻辑变量 教学视频 存储类似灯亮或灯灭、是男还是女等结果只有两种可能的数据时,可以使用逻辑型变量。 逻辑型变量用关键字bool定义,所以又称为布尔变量,其值只有两个false(假)和true(真),false和true是逻辑常量,又称布尔常量。 流程图如下:英汉小词典: bool:布…

我的二次元相册又回来了

从最早的图库,到图床,在到现在的相册.我对图片的执着已经可以说是跨越了好几个世纪了. 图库的图片是存在七牛云的,后来流量被刷就关闭了. 图床,现在转为为博客提供图片上传服务了. 相册,就是手机中相册的概念,它既可以存图片也可以放视频. 逐渐是越来越完善了 这两天就把平常保…

劫持微信聊天记录并分析还原 —— 合并解密后的数据库(三)

程序以 Python 语言开发,可读取、解密、还原微信数据库并帮助用户查看聊天记录,还可以将其聊天记录导出为csv、html等格式用于AI训练,自动回复或备份等等作用。本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。程序以 Python 语言开发,可读取、解密、…

ABC377

C link存一下那些点不能占,用总数减去即可,注意存的时候可以用一个\(map\),存过的就不要再存了。