内核热补丁原理介绍

使用场景

1、修复内核或模块的缺陷函数

内核热补丁能够动态的修复内核和模块的缺陷函数。在开发人员发现问题,或者操作系统发现安全漏洞需要修复时,可以通过将缺陷函数或者安全补丁制作成内核热补丁打入系统中的方法,在不需要重启系统或者插拔模块、不中断业务的前提下修复缺陷。

2、开发过程中增加调试或测试手段

内核热补丁也适用于在开发过程中进行调试和测试。比如在模块或者内核的开发过程中,如果需要通过在某一个函数中添加打印信息,或者为函数中某一个变量赋予特定的值,可以通过内核热补丁的形式实现,而不需要重新编译内核、安装、重启的操作。

原理分析

Kpatch基于ftrace实现内核函数的替换,类似于ftrace的动态探测点。利用mcount机制,在内核编译时在每个函数入口保留数个字节,然后在打补丁时将“被替换函数”入口保留的字节替换为跳转指令,跳转到Kpatch的相关流程中,最终进入“新函数”的执行流程,实现函数级别的执行流程在线替换
-

结合步骤1中的代码对比发现,在/proc/meminfo所看到的内容中,多了LivePatchtest项,并且在执行"cat /proc/meminfo"命令时,dmesg信息中也打印了步骤1中patch代码打印片段。这就证明了我们制作的热补丁是有效的,成功打入了当前运行的内核中。

以上即为热补丁原理、制作、打入热补丁、验证热补丁是否生效的基本方法
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值