《Java虚拟机学习》 asmtools 字节码汇编器使用 与 JVM识别方法重载 的思考

news2024/11/24 7:09:50

1.asmtools下载

链接:https://pan.baidu.com/s/1R3nAaUbN1Dkf6UKkdEMSEA?pwd=k8l8
提取码:k8l8

2.结合方法重载实验的使用

总所周知,方法重载跟方法名无关,但对于JVM而言,区别方法主要通过 类名,方法名,方法描述符(形参列表+返回值组成),因此返回值不同,其他要素相同JVM也能定位到方法。

但JAVA不行,编译器就会给你报错。因此我们通过 asmtools 修改字节码

2.1 方法名不同先生成类文件

如下面的这个类,出了main方法还有两个方法名不同的方法,首先生成class文件,然后我们在用asmtools 修改方法名,最后在汇编成class文件,最后看是否能成功执行;

public class ReWriteDemo {

    public int method1() {
        return 1;
    };

    public String method() {
        return "字符1";
    }

    public static void main(String[] args) {
        ReWriteDemo reWriteDemo = new ReWriteDemo();
        String str = reWriteDemo.method();
        System.out.println("str = " + str);
    }
}

生成class文件

javac ReWriteDemo.java

1

asmtools 转换为 jasm 语法

java -jar asmtools.jar jdis ReWriteDemo.class > ReWriteDemo.jasm

修改方法名

3

反向生成class文件

java -jar asmtools.jar jasm ReWriteDemo.jasm

4

最后用查看生成的class字节码文件 方法名相同,如果在IDEA中这么写首先就会报错,编译更加通不过

image-20230507210917651

运行 (注意操作过程中要删除package) 成功输出内容,验证了对JVM来说,返回值不同,也是方法重载

image-20230507211148205

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java spring MVC REST风格概念叙述

REST属于spring MVC中的一个知识点 REST是三个单词的缩写 即 Representational State Transfer 意思为 表现形式状态转换 老实说 不用尝试字面上理解 因为字面意思 确实是比较抽象 其实 意思就是 访问网络资源的格式 转换 下图 对比了 传统风格和REST风格 请求路径的差别 RES…

【英语】大学英语CET考试,阅读部分2(长篇阅读,选词填空,综合演练)

文章目录 1、长篇阅读(连连看,要会做)1.1 解题技巧(定位词扫读,看到大于看懂,一题带练)1.2 做题方法复习总结1.3 题目练习(2篇文章) 2、选词填空(只有5分&…

opencv_c++学习(五)

Mat类数值存储方式 上图为opencv中三通道数据的存储方式,反映到图像上则为空间维度为3*3,通道为3的图像。 Mat类的属性 Mat类的属性如上,在这里我们解释一下step。step是行列数与数据类型的字节数相乘的数据。 Mat类元素读取 在Mat中&…

云原生: istio+dapr构建多运行时服务网格...  多运行时是一个非常新的概念。在

2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多运行时)的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华。那到底什么是多运行时呢?首先还是得从分布式应用的四大类基本需求讲起。简单来讲任何分布…

【力扣周赛】第344场周赛

【力扣周赛】第344场周赛 6416:找出不同元素数目差数组题目描述解题思路 6417:频率跟踪器题目描述解题思路 6418:有相同颜色的相邻元素数目题目描述解题思路 6419:使二叉树所有路径值相等的最小代价题目描述解题思路 6416&#xf…

C++ ---- 类和对象(上)

目录 本节目标 常见问题 面向过程和面向对象的理解 什么是类如何定义类 类的引入 类的定义 类的两种定义习惯 类的作用域 类的访问限定符 访问限定符介绍 封装 封装的意义 类的实例化 类对象模型 类对象的存储方式 结构体对齐 计算类对象的大小 this指针 问题…

数青蛙​、[USACO10FEB]Chocolate Giving S

一、1419. 数青蛙 思路 这道题有俩种解法,一是记数,二是贪心 记数: 这是官方的题解 我们用frog_ num来表示现在正在发出蛙鸣声的青蛙数目,用cnt[c] 示已经发出-次有效蛙鸣中的字符c的青蛙个数,比如当cnt[c] 2时表示当前有2只…

[mini LCTF 2023] 西电的部分

感觉比赛还是很不错,就是有点难了,不过都是简单题重复更没意思。作出一道来就有一点收获。 misc1 签到题也不简单,已经很久不作misc了,感觉这东西需要安的东西太多,怕机子累坏了。 一个复合的wav声音文件&#xff0…

【Android入门到项目实战-- 8.5】—— 使用HTTP协议访问网络的实践用法

目录 准备工作 一、创建HttpUtil类 二、调用使用 一个应用程序可能多次使用到网络功能,这样就会大量代码重复,通常情况下我们应该将这些通用的网络操作封装到一个类里,并提供一个静态方法,想要发送网络请求的时候,只…

【c语言】字符串匹配(搜索) | API仿真

c语言系列专栏:c语言之路重点知识整合 字符串知识点:字符串基本概念、存储原理 字符串匹配 目录 一、字符串匹配二、strstr仿真声明:指针方式定义:调用测试:运行结果: 一、字符串匹配 字符串匹配是对一个…

HttpClient连接池使用不当问题分析解决

目录 背景代码实现工具类功能实现模拟使用 问题分析与定位解决方案总结 背景 最近遇到一个HttpClient问题,某个接口一直报404错误。该接口使用HttpClient调用其他服务获取数据,为了提高接口调用性能,利用httpclient池化技术来保证请求的数量…

嵌入式中利用软件实现定时器的两种方法分析

目录 第一:简介 第二:链表实现方式 第三:结构体实现方式 第一:简介 在一般的嵌入式产品设计中,介于成本、功耗等,所选型的MCU基本都是资源受限的,而里面的定时器的数量更是有限。在我们软件…

Origin如何绘制基础图形?

文章目录 0.引言1.绘图操作2.图形设置3.图形标注 0.引言 因科研等多场景需要绘制专业的图表,笔者对Origin进行了学习,本文通过《Origin 2022科学绘图与数据》及其配套素材结合网上相关资料进行学习笔记总结,本文对绘制基础图形进行阐述。 1.…

2023.5.7 第五十二次周报

目录 前言 文献阅读:基于BO-EMD-LSTM模型预测教室长期二氧化碳浓度 背景 思路 BO-EMD-LSTM 混合模型 EMD 算法 与其他模型的比较 结论 论文代码 总结 前言 This week, I studied an article that uses LSTM to predict gas concentration.This study wa…

Springboot +Flowable,按角色分配任务

一.简介 在为 UserTask 设置处理人的时候,除了设置单个的处理人,也可以设置 Group(分组),就是某一个用户组内的所有用户都可以处理该 Task。 二.绘制流程图 首先我们还是使用之前旧的流程图,流程图截图如…

从0学Spring Boot框架(Spring Boot配置文件与Spring Boot日志文件)

文章目录 1. 什么是Spring Boot?2. 如何创建Spring Boot项目?3. 验证Spring Boot项目的创建3.1 补充添加依赖3.2 代码示例 4. Spring Boot配置文件4.1 配置文件的作用4.2 配置文件的格式4.2.1 properties的语法4.2.2 yml的语法4.2.3 properties与yml的对…

想把PDF转成Word?这三个免费在线工具不容错过!

在日常工作和学习中,我们经常会遇到需要将PDF文件转为Word文档的情况。本文将介绍三种不同的PDF转Word的方法。 首先是推荐的PDF转Word网站:记灵在线工具(http://remeins.com)。 这是一个功能非常强大的PDF在线处理网站,可以完全…

CNI_02_Flannel 跨主机通信Overlay Network三种实现

文章目录 一、前言二、跨主机网络三、UDP模式四、VXLAN模式4.1 VXLAN完全在内核态中构建Overlay Netwok覆盖网络4.2 VXLAN模式整个流程步骤1:网络请求从容器到宿主机步骤2:根据目的容器IP在Node1宿主机上找到正确的route路由步骤3:构建内部数…

深度学习实战项目(一)-基于cnn和opencv的车牌号识别

深度学习实战项目(一)-基于cnn和opencv的车牌号识别 网上大部分是关于tensorflow,使用pytorch的比较少,本文也在之前大佬写的代码的基础上,进行了数据集的完善,和代码的优化,效果可比之前好一点。 数据集 数据集来自…

AutoCV:Python基础总结

目录 Python基础总结前言Python基础课程总结第一课:开发环境和基本数据类型第二课:控制流程和函数第三课:闭包和根号2的求解第四课:类和三大神器第五课:文件IO和pickle、json第六课:作用域、模块和包、Data…