直接修改class文件的方式

因为工作上的问题,昨天不得不百度了一下关于直接修改class文件的问题,找到了两种方式:一种是jclasslib,简单的来说,它能够反编译class文件,并将里面的内容弄成节点的形式,每个节点都有一个ID来表示。通过这些节点ID,我们就能以文件流的形式修改里面的内容,具体方式网上已经有很多,就不再赘述。
除了jclasslib,还有一个工具叫JBE,它和前者类似,且支持直接修改class文件。运行JBE之后,找到所需要修改的方法节点,在下面图片中标红的区域栏内修改。
直接修改class文件的方式_第1张图片
昨天大概尝试了一下,发现两个工具都是修改常量比较好用,其他类似参数名、类型、返回值类型等似乎都能读取到,但在编辑器中的阅读性实在太差。
jclasslib附带了几个jar包,能够在用文件流读取class文件时,准确定位里面的节点。从打印出来的东西来看,能读取和修改的东西还是挺多的。网上目前教程所用的jclasslib版本较低,在jclasslib官网下载的工具中,其中一个包已经过时了,需要下载旧版本才行。
以下附上jclasslib和JBE的下载地址:

jclasslib:https://github.com/ingokegel/jclasslib/releases

JBE:http://set.ee/jbe/

你可能感兴趣的:(新知识点)