大家好,欢迎来到IT知识分享网。
JBE
JBE(Java Bytecode Editor)是一个Java字节码编辑工具,而且是开源的,该项目是基于jclasslib ej-technologies(
https://github.com/ingokegel/jclasslib)字节码查看工具和Apache Jakarta项目。JBE下载地址:
http://set.ee/jbe/
下载完成后解压即可使用
点击jbe. bat(Windows)或jbe.sh(Linux)即可运行JBE。src目录下的是JBE的源码。
使用示例
测试环境说明
Java环境:jdk1.8
使用工具:IDEA、JBE
1.新建一个Test源码如下:
public class Test { public void a(){ System.out.println("run Test a function"); } public static void main(String[] args) { new Test().a(); } }
2.按Ctrl+Shift+F9编译Test.java,IDEA会把.class文件生成在out目录下
3.用JBE打开(File——Open class file)Test.class
在左边可以看到该类的常量池(Constant Pool)、字段(Fields)、方法(Method)等信息。点击XXX方法,选择[0] Code查看该方法的字节码。在右边可以看到方法的字节码,点击Code Editor可编辑字节码.
4.修改方法字节码(字节码看不懂?不会写怎么办?这里分享个方法,我们可以通过IDEA、Eclipse编写java源码,编译成.class,通过JBE打开就可以得到想要的字节码了,再把字节码拷贝、粘贴到要修改的地方就好了)。
比如:我这里要把new Test().a();字节码改成Test2.a()。
Test2.java源码:
public class Test2 { public static void a(){ System.out.println("run Test2 a function"); } }
(1)首先我新建一个Demo类,并编写了我想要的源码并编译。
(2)这里用的是IDEA,.class就在out目录下。通过JBE打开out目录下的Demo.class
红框中的就是我想要的字节码
(3)然后把得到的字节码拷贝替换掉new Test().a();的字节码。最后点Save method保存修改的字节码。
new Test().a();的字节码:
修改后:
5.最后,测试是否修改成功,打开命令行工具,执行java Test,输出如果是”run Test2 a function”,而不是”run Test a function”就成功了。
如果是修改jar文件中的.class文件。因为jar其实也是个zip文件,所以把修改后的.class替换掉原来jar中的.class,然后重新压缩并修改后缀为jar就好了。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147196.html