修改class文件的内容

修改Java生成的class文件有三种方法:JClassLib、MadEdit、环境模拟。方法三比较耗费时间,但简单易懂,解决问题能力远大于方法1和2,亲测方法可行。

方法一:使用工具JClassLib进行修改

该方法是网上比较常用的方法,可用于简单的修改,如修改某个字符串的值。可以将setText("abc")改成setText("备注")。但是对于将setText(model.getConext().getTitle())改成setText("备注")很难。难点在于很难找到setText()方法和当前参数之间的关系。

方法二:使用二进制修改工具MadEdit进行修改。

备注:该方法比方法1简单很多,能解决的问题范畴和方法1类似。

方法三:顺向思考,环境模拟。

直接修改.class文件非常难,我们可以顺向思考,创建一个和需要修改的类文件有着相同环境的项目。

class文件包含的信息不外乎该类内部方法的入口信息(方法名、参数类型和个数)和内部处理逻辑、类文件所在包名、引用的类的包名和被引用方法的入口信息。因此针对需要修改的类(下面简称test.java),新建一个项目后,其相同环境定义如下:

a、test.java的包名、内部代码(除需要修改部分)和原项目一致。

b、test.java中如果出现报错,缺少什么便将原代码中对应引用类(下面简称other.java)代码粘过来,放在和原包一致路径下,直到test.java不报错。

c、other.java中如果出现报错 , 只 要保证test.java中需要的方法的定义在即可,方法内部的逻辑,其它的方法,继承或实现的接口都可以删除(注释)掉,直到test.java不报错。

d、针对其它报错情况,具体调整.直到不报错并可以正常导出jar包。

建立好环境后,导出jar包,取出其中需要修改的.class文件,将原jar包用压缩软件打开并替换该.class文件。即可完成.class文件修改的效果。

posted @ 2022-09-16 11:26  小马000  阅读(2603)  评论(0编辑  收藏  举报