轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。

背景

市面上的Java字节码工具虽然不少,但是都不够完善,要么只支持查看,要么只有部分功能,还有的工具多年不更新了,传统且稳定的修改class的方式还是反编译再修改再编译,但是有时我们需要直接修改字节码还需要用字节码库,比如ASM和javassist等。
而最流行的字节码库ASM却没有官方的编辑器,于是我花了3周空闲时间写了一款IDEA插件: VisualClassBytes,功能相对完善,可以直接修改字节码。

功能介绍

首先在插件市场安装VisualClassBytes
然后在class文件(jar内class亦可)上右键->VisualClassBytes

openvcb.png

即可打开class字节码编辑器页面。
vcb_main.png

左侧的Class Info节点,Interface节点,Inner Class节点和Field节点,可以修改其访问权限,名称和描述符等信息,修改完后点击左侧下角的保存按钮可保存class到磁盘生效。
edit_info.png

选择Method节点,可看到右侧有Code区、LocalVariable区、Exception区和LineNumber区,可分别修改字节码指令,本地变量表、异常表和行号表。
edit_method.png

Code区可以直接编辑字节码指令,有语法高亮和代码提示补全。
Code区的行号处有L0-Ln标签,右键可修改和添加L标签位置。
line.png

同样修改完后点击左侧下角的保存。
点击左侧的Constant Pool节点,可打开常量池并进行修改。
const_pool.png

修改完后点击右侧的保存按钮,可保存常量池。
使用本插件需要有一定的字节码功底,如果你熟悉字节码,那本插件几乎就是为你量身定做的!
即使你没有编辑字节码需求,在分析代码底层原理和优化的时候,也可以将本插件作为一个字节码浏览工具使用。

总结

本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等,感兴趣的朋友可以去试试。

Github地址:https://github.com/Liubsyy/VisualClassBytes

目录
相关文章
|
15天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
45 2
|
2天前
|
Java 数据库连接 开发者
Java中的异常处理机制:深入解析与最佳实践####
本文旨在为Java开发者提供一份关于异常处理机制的全面指南,从基础概念到高级技巧,涵盖try-catch结构、自定义异常、异常链分析以及最佳实践策略。不同于传统的摘要概述,本文将以一个实际项目案例为线索,逐步揭示如何高效地管理运行时错误,提升代码的健壮性和可维护性。通过对比常见误区与优化方案,读者将获得编写更加健壮Java应用程序的实用知识。 --- ####
|
6天前
|
数据采集 存储 Web App开发
Java爬虫:深入解析商品详情的利器
在数字化时代,信息处理能力成为企业竞争的关键。本文探讨如何利用Java编写高效、准确的商品详情爬虫,涵盖爬虫技术概述、Java爬虫优势、开发步骤、法律法规遵守及数据处理分析等内容,助力电商领域市场趋势把握与决策支持。
|
10天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
11天前
|
Java 测试技术 API
Java 反射机制:深入解析与应用实践
《Java反射机制:深入解析与应用实践》全面解析Java反射API,探讨其内部运作原理、应用场景及最佳实践,帮助开发者掌握利用反射增强程序灵活性与可扩展性的技巧。
|
16天前
|
存储 算法 Java
Java Set深度解析:为何它能成为“无重复”的代名词?
Java的集合框架中,Set接口以其“无重复”特性著称。本文解析了Set的实现原理,包括HashSet和TreeSet的不同数据结构和算法,以及如何通过示例代码实现最佳实践。选择合适的Set实现类和正确实现自定义对象的hashCode()和equals()方法是关键。
25 4
|
19天前
|
Java 编译器 数据库连接
Java中的异常处理机制深度解析####
本文深入探讨了Java编程语言中异常处理机制的核心原理、类型及其最佳实践,旨在帮助开发者更好地理解和应用这一关键特性。通过实例分析,揭示了try-catch-finally结构的重要性,以及如何利用自定义异常提升代码的健壮性和可读性。文章还讨论了异常处理在大型项目中的最佳实践,为提高软件质量提供指导。 ####
|
7月前
|
机器学习/深度学习 人工智能 Java
20款超级好用的idea插件,开发效率翻倍!!!
20款超级好用的idea插件,开发效率翻倍!!!
253 1
|
7月前
idea plugin 插件开发
idea plugin 插件开发
110 0
|
存储 程序员 开发工具
IDEA插件开发.02之“异味”代码收集插件
许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”,共享文档复制黏贴略显麻烦,所以想着是否可以搞一个IDEA插件来帮忙收集常见代码,毕竟IDEA作为后端程序员必备的开发工具,显然会方便很多。
199 1
IDEA插件开发.02之“异味”代码收集插件