ITPub博客

首页 > 数据库 > 数据库开发技术 > 55 KVM工具使用指南-LibcarePlus概述

55 KVM工具使用指南-LibcarePlus概述

原创 数据库开发技术 作者:shuchaoyang 时间:2023-04-11 07:00:00 0 删除 编辑

55 KVM工具使用指南-LibcarePlus概述55.1 概述55.2 软硬件要求55.3 注意事项和约束

55 KVM工具使用指南-LibcarePlus概述

55.1 概述

LibcarePlus 是一个用户态进程热补丁框架,可以在不重启进程的情况下对 Linux 系统上运行的目标进程进行热补丁操作。热补丁可以应用于 CVE 漏洞修复,也可以应用于不中断应用服务的紧急 bug 修复。

55.2 软硬件要求

在 openEuler 上使用 LibcarePlus,需要满足一定的软硬件要求:

  • 当前LibcarePlus支持 x86 体系架构和arm64体系架构。

  • LibcarePlus 可以在任何支持安装 libunwind、 elfutils 以及 binutils 的 Linux 发行版系统上运行。

  • LibcarePlus 使用ptrace()系统调用,需要对应Linux发行版本的相关编译选项支持。

  • LibcarePlus 制作热补丁时,依赖原可执行文件的符号表,因此,请勿过早将符号表strip掉。

  • 对于开启selinux的Linux系统,需要自行适配对应的selinux规则。

55.3 注意事项和约束

使用 LibcarePlus,需遵循以下热补丁规范和约束:

  • 仅支持对 C 语言编写的代码,不支持汇编语言等。

  • 代码文件名必须符合 C 语言标识符命名规范:由字母(A-Z,a-z)、数字 (0-9)、下划线“_”组成;并且首字符不能是数字,但可以是字母或者下划线;不能包含“-”、“$”等特殊符号。

  • 支持增量补丁,即支持对进程打多个补丁,但补丁加卸载管理需使用者执行设计,一般遵循FILO规则。

  • 不支持补丁自动加载,对于特定进程,需使用者自行设计。

  • 支持补丁查询功能。

  • 静态函数补丁受限于系统中能找到该函数的符号表。

  • 热补丁为进程粒度,即动态库热补丁只能对调用这个动态库的进程打补丁。

  • 单个进程支持的补丁数受限于跳转指令的跳转范围和虚拟内存地址空洞大小,一般支持[1, 512];

  • 对于TLS变量,仅支持修改IE模式的TLS变量;

  • 后续补丁不能使用之前补丁中定义的符号;

  • 以下场景不支持热补丁:

    • 死循环函数、不退出函数、inline 函数、初始化函数、NMI 中断处理函数

    • 替换全局变量

    • 小于5字节的短函数

    • 修改头文件

    • 增加和删除目标函数的出参和入参

    • 数据结构成员变化(新增、删除、修改)

    • 修改包含 LINE , FILE 等gcc编译宏的 C 文件

    • 修改 intel 矢量汇编指令


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!


有什么吐槽或反馈意见,直接告诉我!

温馨提示:如出现二维码失效也可直接添加微信号:ysc13803862469。


原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303569