直接修改别人jar包里面的class文件 工具:jclasslib

article/2025/9/28 21:24:34

出于某些原因

需要把别人jar包里面的class修改一下信息

配置文件*.properties MANIFEST.MF 这些东西可以直接用记事本打开修改 然后替换掉就OK..

在网上游荡了半天,没有找到合适的方法

开始我是先用jd-gui反编译 把我需要修改的那个A.class文件反编译出来把代码保存到A.java

然后直接在dos里面用javac A.java编译

问题来了..

因为A.java引用了很多其他jar下面的方法 而且A.java有package

鼓捣了半天以后 最终结果:编译无法正常通过 不能达到直接修改替换掉别人的class文件的目的

于是又在网上转悠

看到jclasslib这个东西 于是又鼓捣了一会儿

居然成功了 窃喜 遂记下步骤方法 提供给需要的朋友..

软件安装: 把jclasslib 下载下来安装好 (我下的是3.0的,百度google很多..)

我这里以我自己写的一个小工具 POJOTool.jar 为例

软件打开画面效果如下

比如我想要修改 不能链接数据库的提示信息 为 "芝麻不开门!"

 

步骤如下:

1.用jd-gui打开该jar  怎么打开不用我说了吧?

打开之后找到 要修改提示信息 的class文件 这里找到的是GenEntity

找到对应需要修改的代码所在的方法名

我这里包含提示信息的这段代码在方法 getAllDataBase()  如下图:

2.用jd-gui或者winrar把GenEntity.class 解压出来到C盘 (目录无所谓)

3.双击桌面上安装好了的 jclasslib bytecode viewer ,点击软件的 File -- Open Class File 打开你刚解压出来的class文件

4.点击methods--getAllDataBase--Code

methods是表示方法不用说吧

getAllDataBase是刚在jd-gui里面找到的方法名

Code包含了getAllDataBase方法里所有的信息

找到"不能打开数据库连接,请检查!"

这里这个工具没有提供搜索功能

如果这里很多内容 那么你可以点击 copy to clipboard把这里的内容复制到一个文本文件里面然后再搜索

 

 

这里找到的是第82行

 

5.点击第 82行后面的 #34 会跳转到Constant Pool常量池的第34个常量

6.再点右边的 cp info #362 会跳转到第362个常量

这里能看到String: 不能打开数据库连接,请检查! 也就是最后输出的信息

7.找到GenEntity.class的关键常量了现在就该修改它了

在eclipse里面新建一个Test来处理GenEntity.class

import java.io.*;   
import org.gjt.jclasslib.io.ClassFileWriter;   
import org.gjt.jclasslib.structures.CPInfo;   
import org.gjt.jclasslib.structures.ClassFile;   
import org.gjt.jclasslib.structures.constants.ConstantUtf8Info;   
public class Test {   public static void main(String[] args) throws Exception {   String filePath = "C:\\GenEntity.class";   FileInputStream fis = new FileInputStream(filePath);   DataInput di = new DataInputStream(fis);   ClassFile cf = new ClassFile();   cf.read(di);   CPInfo[] infos = cf.getConstantPool();   int count = infos.length;   for (int i = 0; i < count; i++) {   if (infos[i] != null) {   System.out.print(i);   System.out.print(" = ");   System.out.print(infos[i].getVerbose());   System.out.print(" = ");   System.out.println(infos[i].getTagVerbose());   if(i == 362){   ConstantUtf8Info uInfo = (ConstantUtf8Info)infos[i];   uInfo.setBytes("芝麻不开门!".getBytes());   infos[i]=uInfo;   }   }   }   cf.setConstantPool(infos);   fis.close();   File f = new File(filePath);   ClassFileWriter.writeToFile(f, cf);   }   
}  


这里需要注意"C:\\GenEntity.class"是我存放class的目录


if(i == 362) 这里是刚我在第七步找到的常量序号


"芝麻不开门!"这里是我想修改的文字信息!

运行Test.java 会有如下提示信息 没有报错就证明正常的 如果报错那么就有问题

9.把C盘刚修改后的GenEntity.class替换掉原来的GenEntity.class

怎么替换不用我说了吧..

用winrar打开.jar 然后把GenEntity.class拖进去覆盖就行了

10.运行效果..

大功告成...


http://chatgpt.dhexx.cn/article/smBEsOtg.shtml

相关文章

Idea中jclasslib的安装与使用

我们学习JVM的时候常常需要查看字节码指令&#xff0c;而idea中就可以下载jclasslib插件&#xff0c;进行字节码指令的查看。下面我来带大家jclasslib的安装。 安装 安装之后重启即可 使用 使用的时候只需要点开view选中下图的选项即可&#xff0c;但是要注意是编译后再使用…

jclasslib安装

学习一个jvm的知识的时候总要去研究一些字节码指令&#xff0c; 但是每一次都把class文件打开到jclasslib里面很是麻烦&#xff0c;后来google发现有人已经写好了这个插件 1、 按住 ALTCTRLS 打开setting 2、 选择 plugins 3、选择 Browse Repositories ,搜索 jclasslib 由于…

jclasslib修改jar包中class文件 IDEA

一、需求&#xff1a; 第三方jar包中的代码不符合项目的需求&#xff0c;需要对某个class文件进行修改&#xff0c;从而满足项目的需求。通常采用对class文件进行反编译&#xff0c;然后在重新生成jar包。但是反编译的结果不能100%正确&#xff0c;所以直接对class文件进行修改…

可视化已编译Java类文件字节码的神器jclasslib

1、概述 作为Java工程师的你曾被伤害过吗&#xff1f;你是否也遇到过这些问题&#xff1f; 运行着的线上系统突然卡死&#xff0c;系统无法访问&#xff0c;甚至直接OOM 想解决线上JVM GC问题&#xff0c;但却无从下手 新项目上线&#xff0c;对各种JVM参数设置一脸茫然&#x…

[JVM] Jclasslib -- 可视化反编译.class文件的工具

传统我们使用以下命令即可反编译字节码文件 javap -v xx.class Jclasslib是一个可视化已编译Java类文件和包含的字节码的工具。可以在UI中编辑类文件的许多方面。此外&#xff0c;它还包含一个库&#xff0c;使开发人员能够读写Java类文件和字节码。它有两种使用方式--软件安…

jclasslib 插件安装及使用

学习Java&#xff0c;必须要了解 JVM&#xff0c;而学习 JVM 知识时&#xff0c;总要去研究一些字节码指令 而 jclasslib 这个插件很好的解决了这个问题 jclasslib安装&#xff1a; 1.打开设置 或者按Ctrl Alt S&#xff0c;打开设置 2.找到 jclasslib 插件 点击 install …

Python实现博弈树minmax补全与α-β剪枝算法脚本简介

文章目录 前言一、题目二、使用步骤1.递归构建博弈树2.α-β剪枝算法3.博弈树可视化4.测试实例5.结果展示6.全部代码 总结 前言 使用Python编程实现博弈树的构建&#xff0c;实现利用MinMax方法补全博弈树缺失值&#xff0c;并结合α-β剪枝算法&#xff0c;实现博弈树的剪枝。…

CART的剪枝算法

CART剪枝算法从“完全生长”的决策树的底端减去一些子树&#xff0c;使决策树变小&#xff0c;从而能够对未知数据有更准确的预测。CART算法由两步组成&#xff1a;首先从生成算法产生的决策树 底端开始不断剪枝&#xff0c;直到 的根结点&#xff0c;形成一个子树序列 &#x…

α-β剪枝算法学习寄(蒟蒻向,巨佬勿入)

由于做某题时暴力分出来很低&#xff0c;但某巨佬告诉我α-β剪枝很好用于是本屑踏上了征途。作为一只屑屑在学习这个算法时到处看各种blog&#xff0c;于是乎被上界下界决策等一众本屑看不懂的词汇弄得晕头转向&#xff0c;这篇blog就用本屑的语言梳理一下α-β剪枝算法捏。 …

alpha-beta剪枝算法原理(附代码)

alpha-beta剪枝算法原理 背景Max-Min算法alpha-beta剪枝代码 背景 由于笔者最近要写人工智能课的大作业&#xff0c;所以这两天在学习博弈论相关的知识&#xff0c;但网上对alpha-beta剪枝的原理讲的都不是很清晰&#xff0c;很多细节都忽略了&#xff0c;让初学者会有一种脑子…

人工智能之AlphaBeta剪枝算法

任务描述 本关任务&#xff1a;学习人工智能博弈算法中的 AlphaBeta 剪枝技巧&#xff0c;并基于 MinMax 算法编程实现如下图博弈树最优值问题的求解。 博弈树的输入形式为字符串&#xff1a;[A, [B, (E, 3), (F, 12), (G, 8)], [C, (H, 2), (I, 4), (J, 6)], [D, (K, 14), (…

α-β剪枝算法

在写之前首先感谢&#xff1a;https://blog.csdn.net/wenjianmuran/article/details/90633418 这里主要介绍minmax算法和α-β剪枝,相当于对一下文章的翻译&#xff1a; α-β剪枝 Minmax算法 正文&#xff1a; 看了很多关于α-β剪枝算法&#xff0c;大致明白了其中的含义…

α-β剪枝算法简单原理说明

看了一大堆文章实在看不懂&#xff0c;看视频也看不懂&#xff0c;但是看着看着突然顿悟了。这篇文章只讲大概的原理&#xff0c;不讲具体过程。 好了既然会搜这个算法&#xff0c;想必已经知道最大值最小值算法了&#xff08;不知道就去搜吧&#xff09;。这里直接讲例子。 …

alpha-beta剪枝算法

实验报告 alpha-beta剪枝算法 姓名&#xff1a;张楚明 学号&#xff1a;18342125 日期&#xff1a;2021.01.15 摘要 本实验将搜索深度为4的Alpha-Beta剪枝算法应用于中国象棋中黑方走棋&#xff0c;实现了中国象棋的人机博弈。博弈过程中综合考虑了棋力、对敌方棋子的攻击力、…

透析极大极小搜索算法和α-β剪枝算法(有案例和完整代码)

文章目录 前言minimax算法完整代码算法思想代码实现算法优化 α-β剪枝算法完整代码算法思想代码实现算法对比更多案例 结语 前言 先做了一版五子棋的小项目&#xff0c;后面又做了一个功能更强大的中国象棋的项目&#xff0c;但是始终都没有实现一版“智能”AI。 明知道这类博…

决策树后剪枝算法(二)错误率降低剪枝REP

​  ​​ ​决策树后剪枝算法&#xff08;一&#xff09;代价复杂度剪枝CPP  ​​ ​决策树后剪枝算法&#xff08;二&#xff09;错误率降低剪枝REP  ​​ ​决策树后剪枝算法&#xff08;三&#xff09;悲观错误剪枝PEP  ​​ ​决策树后剪枝算法&#xff08;四&…

C++实现的基于αβ剪枝算法五子棋设计

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85883881 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85883881 基于αβ剪枝算法的五子棋 五子棋介绍 简介&#xff1a; 五子棋是世界智力运动会竞技项目之一&#x…

决策树后剪枝算法(四)最小错误剪枝MEP

​  ​​ ​决策树后剪枝算法&#xff08;一&#xff09;代价复杂度剪枝CPP  ​​ ​决策树后剪枝算法&#xff08;二&#xff09;错误率降低剪枝REP  ​​ ​决策树后剪枝算法&#xff08;三&#xff09;悲观错误剪枝PEP  ​​ ​决策树后剪枝算法&#xff08;四&…

计算机博弈 基础算法 阿尔法-贝塔剪枝算法 α-β剪枝算法

计算机博弈大赛中 α-β剪枝算法剪枝算法是极大极小算法的一种优化&#xff0c;可以更快的搜索博弈树 预备知识&#xff1a; 广度优先搜索(BFS) 深度优先搜索(DFS) 极大极小算法(MaxMin算法) 介绍 剪枝算法来源于极大极小算法&#xff0c;在博弈树分枝过多时可以使用这个方法…

卷积神经网络通道剪枝算法小结

一、剪枝分类 目前常见的模型剪枝算法主要分成两类&#xff0c;即非结构化剪枝与结构化剪枝&#xff1b;在不少的神经网络加速器中已经应用了这些剪枝算法&#xff0c;早期常见的是非结构化剪枝&#xff0c;例如MIT的韩松组的前几年的相关工作中就有此类应用&#xff0c;但是在…