用Swing写了一个Class编辑器:ClassEditor

1,740 阅读2分钟

一、它是什么?

顾名思义,它是一个用来编辑字节码的简单的小工具。

二、它能干嘛?

字节码编辑器?据我所知,修改字节码相当麻烦。一般情况下,我们需要:

  1. 将 jar 包用 JD-GUI 等工具,将所有 Class 文件全部反编译成 Java 文件;
  2. 外网安装 Idea,将该Java项目拖到 Idea;
  3. 解决各种 Maven 依赖,但有些依赖在内网 Maven 仓库(common-parent.pom、common-project、HbaseService、KafkaService等),故下载失败,且解决较困难;
  4. 编辑相关代码,执行 mvn package,得到新 jar 包。

目前来看,修改 jar 包的确比较麻烦。因此,花了点时间,写了一个简陋的小工具,解决在现网上无法即时编辑 class 的问题。

注意,它用来解决一些较简单、易修改的需求,如果较复杂、涉及代码较多,还请绕道……(∩_∩)

三、怎么使用?

1、运行环境

JDK1.5+ (现网一般都有这个环境吧)

2、使用方法

  • 运行 ClassEditor.exe
  • 填写:Jar包位置
  • 填写:Class类名(全路径)
  • 选择:操作的对象,支持字段和方法
  • 选择:操作的类型
    在这里插入图片描述
  • 生成Class文件,Class文件会生成在Jar包所在路径。

最后,使用 7Z 等压缩工具,将该Class文件覆盖原Class文件即可!(注意覆盖之前,尽量备份原 Jar 包)

3、使用场景

  • 修改三方库jar包的源码|破解软件(如Gson的某BUG:反序列化Map时,int转double问题,解决思路即使用本工具修改某处源码即可,详见:链接
  • 某些全局控制开关(可能是一个Boolean类型的全局变量),由于没有配置在配置文件,但是急需修改其开关状态;
  • 由于没有对某段代码进行 try catch,导致运行时异常,程序假死/退出,需要马上捕获异常;
  • 方法内某段代码逻辑有问题,需要修改;
  • 急需打印某些对象;
  • 急需监控某方法/代码的执行时间
  • 其他……

4、注意事项

  • 不支持泛型等语法糖,编写代码时请去泛型
  • Class文件的每次修改都是在上次修改的基础上进行,如需重置,请重启程序;
  • 如果编写的代码,点击:生成Class文件时提示:CannotComileException:[source error] no such class:xxx,不要慌,只需在编辑框中使用import导入相关Class即可:

四、下载地址

链接:download.csdn.net/download/lo…