Arthas redefine(加载外部的.class文件,redefine到JVM里 )

news2024/9/29 3:56:13

在这里插入图片描述

文章目录

  • 二、命令列表
    • 2.2 class/classloader相关命令
      • 2.2.3 redefine(加载外部的.class文件,redefine到JVM里 )
        • 举例1:加载新的代码,jad/mc 命令使用
        • 举例2:上传 .class 文件到服务器的技巧

二、命令列表

2.2 class/classloader相关命令

2.2.3 redefine(加载外部的.class文件,redefine到JVM里 )

提示:

目的:常用来解决线上服务不停止,修改代码操作

注意点1:redefine 的 class 不能修改、添加、删除类的 field 和 method,包括方法参数、方法名称及返回值。
注意点2:如果 mc 失败,可以在本地开发环境编译好 class 文件,上传到目标系统,使用 redefine 热加载 class

注意点3:目前 redefine 和 watch/trace/jad/tt 等命令冲突,以后重新实现 redefine 功能会解决此问题

注意点4:redefine 后的原来的类不能恢复,redefine 有可能失败(比如增加了新的 field),参考 jdk 本身的文档。

注意点5reset命令对redefine的类无效。如果想重置,需要redefine原始的字节码。

注意点6redefine命令和jad/watch/trace/monitor/tt等命令会冲突。执行完redefine之后,如果再执行上面提到的命令,则会把redefine的字节码重置。 原因是 jdk 本身 redefine 和 Retransform 是不同的机制,同时使用两种机制来更新字节码,只有最后修改的会生效。

参数说明:

参数名称参数说明
[c:]ClassLoader 的 hashcode
[classLoaderClass:]指定执行表达式的 ClassLoader 的 class name
举例1:加载新的代码,jad/mc 命令使用
# 1、使用jad反编译 demo.MathGame 输出到 /opt/MathGame.java
jad --source-only demo.MathGame > /opt/MathGame.java
# 2、把上一步反编译的代码修改完成后,使用mc在内存中对新的代码进行编译
mc /opt/MathGame.java -d /opt
# 3、使用redefine命令加载新的字节码
redefine /opt/demo/MathGame.class
举例2:上传 .class 文件到服务器的技巧

使用mc命令来编译jad的反编译的代码有可能失败。可以在本地修改代码,编译好后再上传到服务器上。有的服务器不允许直接上传文件,可以使用base64命令来绕过。

  1. 在本地先转换.class文件为 base64,再保存为 result.txt

    base64 < Test.class > result.txt
    
  2. 到服务器上,新建并编辑result.txt,复制本地的内容,粘贴再保存

  3. 把服务器上的 result.txt还原为.class

    base64 -d < result.txt > Test.class
    
  4. 用 md5 命令计算哈希值,校验是否一致

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

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

相关文章

童装购买系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;商品分类管理&#xff0c;尺码信息管理&#xff0c;款式信息管理&#xff0c;商品信息管理&#xff0c;在线咨询管理&#xff0c;系统管理 微信端账号功能包…

基于php摄影门户网站

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab)

多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测&#xff08;Matlab&#xff09; 目录 多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测&#xff08;Matlab&#xff09;预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介…

Android Glide(一):源码分析,内存缓存和磁盘缓存的分析,实现流程以及生命周期

目录 一、Android Glide是什么&#xff0c;如何使用&#xff1f; Android Glide是一个由Google维护的快速高效的Android图像加载库&#xff0c;它旨在简化在Android应用程序中加载和显示图像的过程&#xff0c;包括内存缓存、磁盘缓存和网络加载&#xff0c;以确保图像加载的快…

算力共享系统中数据平面和控制平面

目录 算力共享系统中数据平面和控制平面 数据平面 控制平面 算力共享系统举例 控制流程和业务流程,在算力共享系统中举例说明 控制流程 业务流程 算力共享系统中数据平面和控制平面 在算力共享系统中,数据平面和控制平面是两个关键组成部分,它们各自承担着不同的角色…

网络层——IP

IP地址 结构&#xff1a; 由32位二进制数组成&#xff0c;通常用点分的形式被分为四个部分&#xff0c;每个部分1byte&#xff0c;最大值为255。 从功能的角度看&#xff0c;ip地址由两部分组成&#xff0c;网络号和主机号。网络号标识了ip所在的网段&#xff0c;主机号标识了…

AI大模型:揭秘AI产品经理与传统产品经理的差别与转型攻略

引言&#xff1a; 随着ChatGPT等革命性产品的流行&#xff0c;人工智能&#xff08;AI&#xff09;在中国的发展势头愈发强劲。众多企业纷纷投身AI领域&#xff0c;希望在激烈的市场竞争中占据有利位置。在这一背景下&#xff0c;AI产品经理成为了一个备受瞩目的职业角色。那么…

智慧环保大数据平台建设方案

1. 智慧环保现状与挑战 随着环境问题日益严重&#xff0c;环境事件频发&#xff0c;如贵州都匀矿渣污染、云南南盘江水污染等&#xff0c;以及癌症高发率的出现&#xff0c;智慧环保建设显得尤为重要。智慧环保旨在通过技术手段提升环境管理和决策的智能化水平。 2. 宏观环境…

ubuntu系统下,c++图形库Matplot++配置

linux下安装c图形库Matplot&#xff0c;使得c可以可视化编程&#xff1b;安装Matplot之前&#xff0c;需要先安装一个gnuplot&#xff0c;因为Matplot是依赖于此库 gnuplot下载链接&#xff1a; http://www.gnuplot.info/ 一、gnuplot下载与安装 step1.进入链接点击Release链…

一文了解ChatGPT的发展浪潮

前言 近一段时间在学Prompt&#xff0c;刚好学到了ChatGPT的一些发展史&#xff0c;因此沉淀一些相关的概念内容。 以下开始本文的讲解~&#x1f468;&#x1f680; 一、AI简述 人工智能发展史上的三次浪潮&#xff1a; 人工智能、机器学习和深度学习的关系&#xff1a; 人…

大碗娱乐发布业务调整说明 取消艺人经纪业务

大碗娱乐今日发布业务调整说明&#xff1a;不再负责艺人业务&#xff0c;而贾玲导演将专注内容创作。据悉&#xff0c;其公司旗下艺人张小斐、许君聪、卜钰、何欢、张泰维、朱天福、曹贺军、刘宏禄的经纪合约均已到期&#xff0c;双方不再续约&#xff0c;但未来会共同寻求以其…

Excel的基本应用__3

九九乘法表 MAX函数:找出最大值 FREQUENCY函数:计算符合区间的数量 语法&#xff1a; FREQUENCY(data_array, bins_array) data_array&#xff1a;要计算频率的数据数组或单元格区域。bins_array&#xff1a;用于定义区间的数组或单元格区域。 如果您不按 Ctrl Shift Ent…

Soar项目中添加一条新的SQL审核规则示例

soar是一个开源的SQL规则审核工具&#xff0c;是一个go语言项目&#xff0c;可以直接编译构建成一个可执行程序&#xff0c;而且是一个命令行工具&#xff0c;我们可以利用archey来调用soar进行sql规则审核以及sql的分析&#xff0c;包括执行计划的查看及sql建议等。 soar中已…

django开发流程3(轮播图)

1.在models中创建一个模板 class Ads(models.Model):title models.CharField(verbose_name"标题", max_length30)image models.ImageField(verbose_name"广告图", upload_to"ads")url models.URLField(verbose_name"链接网址", de…

Stable Diffusion绘画 | Checkpoint Merger 模型融合

在我们的模型库中&#xff0c;经常会发现下载的模型&#xff0c;生成的图片颜色发灰&#xff0c;暗沉&#xff1a; 主要原因就是&#xff0c;我们下载的模型&#xff0c;作者训练时并没有加入VAE色调文件。 为了解决这个问题&#xff0c;我们可以使用 SD 自带额模型融合页面&am…

召回08 双塔模型——线上服务、模型更新

线上召回 离线存储&#xff1a; 模型训练好之后&#xff0c;部署到线上做召回&#xff0c;快速找到用户感兴趣的物品。 对训练好的两个塔&#xff0c;线上服务前&#xff0c;先用右边的物品塔提取物品的特征做离线存储&#xff0c;记作特征向量b&#xff0c;把&#xff08;b…

redux的基础知识

1. 概念 是集中状态管理工具 2. 使用步骤 3. 总结 参考&#xff1a;黑马程序员react教程

Linux Reverse(1)-LD_PRELOAD

LD_PRELOAD 是 Linux 系统中的一个环境变量&#xff0c;它允许用户在程序运行时动态地加载共享库。通过设置该环境变量&#xff0c;用户可以指定一个或多个共享库&#xff0c;这些库中的函数将在其他库或程序调用相同函数时优先使用。这在调试、注入、替换函数实现或修改程序行…

大数据Hologres(二):Hologres 快速入门

文章目录 Hologres 快速入门 一、资源领取 二、入门体验 1、创建数据库 2、创建表 3、导入示例数据 4、查询表中数据 Hologres 快速入门 一、资源领取 领取链接&#xff1a; 阿里云免费试用 - 阿里云 (aliyun.com) 二、入门体验 1、创建数据库 进入Hologres管理控制…

递归,搜索与回溯40道算法题

目录 一递归 1汉诺塔问题 2合并两个有序链表 3反转链表 4两两交换链表的节点 5Pow(x,n) 二二叉树的深搜 1计算布尔二叉树的值 2求根节点到叶节点数字之和 3二叉树剪枝 4验证二叉搜索树 5二叉搜索树中第K小的元素 6二叉树的所有路径 三穷举vs暴搜vs深搜vs回溯vs…