问题描述:在开发中遇到使用第三方jar时想要修改里边某个class文件的情况
解决方法:
通过jclasslib直接修改class文件

安装jclasslib

可以通过下载jclasslib软件来安装(不推荐)
在IEDA插件中搜索安装jclasslib Bytecode Viewer(推荐)

查看修改源码的信息

将jar包内要修改的class文件拖到IDEA中
点击IDEA工具栏中:View => Show Bytecode With Jclasslib
jclasslib页面主要有Constant Pool、Interfaces、Fields、Methods、Attributes

在Methods下找到对应的方法,点击code再点击右侧的bytecode

点击#23 依次点击到最终位置,显示的是常量池第109个常量

通过代码修改class文件

package com.logan.functions.controller;
import java.io.*;import org.gjt.jclasslib.io.ClassFileWriter;
import org.gjt.jclasslib.structures.ClassFile;
import org.gjt.jclasslib.structures.Constant;
import org.gjt.jclasslib.structures.constants.ConstantUtf8Info;public class Test {public static void main(String[] args) throws Exception {String filePath = "D:\\CaptchaUtil.class";FileInputStream fis = new FileInputStream(filePath);DataInput di = new DataInputStream(fis);ClassFile cf = new ClassFile();cf.read(di);Constant[] infos = cf.getConstantPool();int count = infos.length;for (int i = 0; i < count; i++) {if (infos[i] != null) {if(i == 109){System.out.print(i);System.out.print(" = ");System.out.print(infos[i].getVerbose());System.out.print(" = ");System.out.println(infos[i]);System.out.println(infos[i].getClass().getSimpleName());//根据对应的类型转换ConstantUtf8Info uInfo = (ConstantUtf8Info)infos[i];uInfo.setString("image/png");infos[i] = uInfo;}}}cf.setConstantPool(infos);fis.close();File f = new File(filePath);ClassFileWriter.writeToFile(f, cf);}
}

执行代码是可能会缺少部分jar,缺少的jar包可以在IDEA安装插件的目录下找得到
一般路径为:C:\Users\用户名\.IntelliJIdea2019.1\config\plugins\jclasslib\lib

通过jclasslib修改class文件相关推荐

  1. 杀戮尖塔是用java_杀戮尖塔修改class文件图文教程 杀戮尖塔怎么改class

    杀戮尖塔中玩家们可以单独来修改class文件,来在游戏中得到想要的状态.下面给大家带来杀戮尖塔修改class文件图文教程,感兴趣的玩家可以试一下. 杀戮尖塔修改class文件图文教程 从网上看到有两种 ...

  2. JAVA启动杀怒尖塔_杀戮尖塔如何修改class 杀戮尖塔修改class文件方法步骤图解

    杀戮尖塔如何修改class?相信小伙伴们一定很好奇,修改class文件可以在游戏中得到想要的状态,下面小编为大家带来了杀戮尖塔修改class文件方法步骤图解,感兴趣的小伙伴赶紧跟着小编一起来看看吧. ...

  3. 直接修改class文件的方式

    因为工作上的问题,昨天不得不百度了一下关于直接修改class文件的问题,找到了两种方式:一种是jclasslib,简单的来说,它能够反编译class文件,并将里面的内容弄成节点的形式,每个节点都有一个 ...

  4. 反编译软件dnSpy中修改baml文件

    问题: 使用wpf的visifiref插件,但是会有水印和文本显示,想修改界面去掉文本 you are using the trial version 步骤1: 用反编译软件打开dl文件 步骤2: 搜 ...

  5. linux 在终端修改文件,linux命令行学习(42):修改.bashrc文件

    可以通过修改启动文件改变环境. 下面通过修改.bashrc来改变环境,具体地说,就是在.bashrc中加入四条命令. 一..bashrc文件中原有的内容 我的centos系统中,普通用户主目录中的.b ...

  6. linux hosts文件如何修改_如何修改hosts文件?让你简单方便快捷管理

    如何修改hosts文件?几种修改方法让你简单方便快捷,hosts 是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库&q ...

  7. 不要在桌面保存长期修改的文件否则系统挂了时候面临文件丢失的问题,长期总结面试资料(公司 题目 地址 氛围 加班情况 薪资情况)毁于一旦

    不要在桌面保存长期修改的文件否则系统挂了时候面临文件丢失的问题,长期总结面试资料(公司 题目 地址 氛围 加班情况 薪资情况)毁于一旦! 不要在桌面保存长期修改的文件否则系统挂了时候面临文件丢失的问题 ...

  8. 如何修改hosts文件?

    step1: 在C:\Windows\System32\drivers\etc目录下复制一份hosts文件到桌面 step2: 然后在桌面修改你的hosts,保存下来可能是文本格式 step3: 将. ...

  9. thinkcmf 去掉index.php,​ThinkCMF5.0如何修改入口文件 解决方法

    ThinkCMF如何修改入口文件?ThinkCMF5.0是基于ThinkPHP5.0开发和之前的ThinkCMF版本有了很大的变化. ThinkCMF默认的入口面页   http://www.你的网址 ...

  10. Android 编译期间 动态修改AndroidMainFest文件

    背景: 有时间有些需求,需要我们动态的修改AndroidMainFest文件,比如我想把应用所有的横屏改成竖屏.如果用手动替换搜索也可以,但是就会有一个问题就是,和其他分支合并的时候,容易产生冲突. ...

最新文章

  1. 原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
  2. 以太坊创始人V 神:普通人看见现在,天才看见未来
  3. 来源oa_骨性关节炎(OA)的初期管理——早点行动起来
  4. 【任务脚本】0601更新autojs客户端,回顾之前战绩,注意事项淘宝618活动领喵币autojs脚本,向大神致敬...
  5. HDOJ 2546饭卡(01背包问题)
  6. 洛谷P1311 选择客栈
  7. How to resolve error message Malformed URI literal syntax
  8. 小菜鸡进阶之路.文件操作遇到坑
  9. 微信小程序official-account组件的使用及样式设置
  10. PCM数据格式你该知道的一切
  11. 解压版mysql使用
  12. mac注销快捷键_Mac小技巧 - 快捷键符号解释及用法介绍
  13. 【Kotlin-Room】 cannot pick a constructor since multiple constructors are suitable
  14. 压力测试 闪存_[实验]苹果今年大范围使用的TLC闪存颗粒真的是那么不堪吗?
  15. matlab spline三次样条插值x,Spline(三次样条插值)
  16. c语言socket通讯和进行进行大文件分片传输
  17. PDPS软件:机器人可达性测试功能介绍与使用方法
  18. win10定时关机c语言,win10定时关机在哪?win10设置定时关机的三种方法
  19. 图:美国首颗“嗅碳”卫星发射失败坠海
  20. ztree插件树状图

热门文章

  1. 希捷k7换固件开跑成功
  2. 分布式日志收集(ELK)
  3. linux下声卡配置文件,Linux如何设置声卡
  4. 联想小新air13 pro重装win10时出现找不到存储设备驱动
  5. 37-基于51单片机智能温控风扇设计
  6. 美女程序员,看到最后一个就亮了
  7. BitviseSSH绕过4A内网直连服务器
  8. 下载Linux系统中文件到本地电脑
  9. vbm 分析_VBM
  10. vrep中接近开关与激光雷达