Java 学习--如何修改.class文件

相关工具下载地址:链接: https://pan.baidu.com/s/1Bym4V1MX-8n0OnqzSW-DdA 密码: fc5k

1.使用工具JClassLib进行修改。

详情可见:

[转]如何利用JClassLib修改.class文件 https://blog.csdn.net/betterandroid/article/details/14520667

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

2.使用二进制修改工具MadEdit进行修改。

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

3.顺向思考,环境模拟。

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

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

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

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

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

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

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

备注:该方法比较耗费时间,但简单易懂,解决问题能力远大于方法1和2。亲测方法可行。

你可能感兴趣的:(Java,学习)