JBE

JBE(Java Bytecode Editor)是一个Java字节码编辑工具,而且是开源的,该项目是基于jclasslib ej-technologies(https://github.com/ingokegel/jclasslib)字节码查看工具和Apache Jakarta项目。

下载完成后解压即可使用

点击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就好了。

java 修改字节码_使用JBE(Java Bytecode Editor)修改Java字节码相关推荐

  1. 用java编写验证码程序_编写,验证和分析实时Java应用程序

    本文是" 用实时Java开发"系列的第三篇也是最后一部分,展示了如何设计,编写,验证和分析基本的实时应用程序. 我们将说明: 应用程序的时间和性能要求. 为什么传统的非实时Java ...

  2. java中编码问题_[干货预警]一次搞懂Java中的编码问题

    编码问题一直是一个困扰程序员的问题,尤其是对于java程序员.因为java的跨平台特性,经常需要在多个编码之间进行转换. 下面详细讲一讲java中的编码问题 一.为什么要编码 长话短说,原因如下: 1 ...

  3. Java中合法的关键词_优秀程序员必须掌握的java中50个关键字

    关键字和保留字的区别 正确识别java语言的关键字(keyword)和保留字(reserved word)是十分重要的.Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表 ...

  4. java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能

    原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...

  5. 百度java的线程技术_自我提升(基础技术篇)——java线程简介

    前言:虽然自己平时都在用多线程,也能完成基本的工作需求,但总觉得,还是对线程没有一个系统的概念,所以,查阅了一些资料,理解那些大神和官方的资料,写这么一篇关于线程的文章 本来想废话一番,讲讲自己的经历 ...

  6. java 整数变负数_一文帮你读懂Java整数的存储原理

    前言 大家应该都知道,整数包括负数,零,和正数.在Java中,基本类型中byte(8位).short(16位).int(32位).long(64位)属于整数,并且没有无符号数,均是有符号的.对于计算机 ...

  7. java职业发展路线图_从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析...

    http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...

  8. java局域网聊天代码_简单的局域网聊天程序(java版本的)

    局域网聊天程序,首先我已经默认你的电脑已经配置好的java开发的一些环境,所需代码有两个java的源代码,他们分别是1:Server_Test.java-------2:Socket_Test.jav ...

  9. java企业工资管理系统_基于B/S模式下的JAVA工资管理系统

    今日思考,完成一个工资管理系统项目,需要实现哪些功能? 此类项目常见描述如下: 随着经济的发展,企业正向着大型化.规模化发展,而对于大中型企业,员工.职称等跟工资管理有关的信息随之急剧增加.在这种情况 ...

最新文章

  1. rsync常用的三种用法
  2. 【控制】影响系统响应的因素
  3. 【Flask项目2】项目基本架构配置(1)
  4. mysql 设置 table name 表名不区分大小写
  5. [poj3692]Kindergarten
  6. TikZ学习笔记(二)循环
  7. MySQL高级-MySQL存储引擎
  8. clojure 使用Lazy-seq创建斐波那契数列
  9. Hive 复杂数据类型之map
  10. 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况
  11. s3c2440中蜂鸣器的打开与关闭
  12. ai故障风字体_AI教程!3步搞定酷炫故障文字效果
  13. 彩色图像灰度化 (RGB ⇒ Gray )(RGB ⇒ YUV)(Verilog)
  14. 服务器 amd cpu性能排行榜,amd cpu 性能排行榜_amd处理器性能排行
  15. syb需求分析问卷_syb创业计划书模板完整版.doc
  16. NYOJ 32 组合数
  17. 数学实验——函数绘图实验
  18. 解决nasm/yasm not found or too old. Use --disable-x86asm for a crippled build报错
  19. 第十四届蓝桥杯广东省省赛游记+个人题解
  20. Android手机之间不消耗流量互传文件

热门文章

  1. 想进互联网大厂,该怎么做?
  2. JLink V8刷固件方式 转载整合
  3. python bad file descriptor_python socket.error: [Errno 9] Bad file descriptor
  4. c语言 freopen txt_C语言freopen()函数
  5. 计算机工业设计方向是学什么的,工业设计学什么 以后能做什么
  6. gff文件_#GTF/GFF格式# gffread入门使用
  7. uniapp自定义tabbar(支持中间凸起,角标,动态隐藏tab,全端适用)
  8. 关于春晚红包活动自己的思考
  9. 初创企业克服机器学习实施挑战的4种方法
  10. 强大的Git客户端:SourceTree插件开发指南