• 可加载内核模块(LKM,)


    概述

    可加载模块(LKM)是为了扩展操作系统基本内核功能的object代码文件,通常使用LKM为新的硬件或文件系统添加支持,或添加系统调用,当LKM所提供的功能不需要时,也可以卸载LKM以达到释放内存和资源。

    优点

    如果没有可加载内核模块,操作系统必须将可能的功能全部编译到基础内核中,大部分功能驻留在内存中但不会被使用,造成内存浪费。如果再有新的功能加入,用户就需要重建并重启基础内核。

    在Linux上的实现

    通过modprobe命令,Linux可以挂载或卸载可加载内核模块。从内核2.6版本开始,这些可加载模块就以.ko的形式放置在/lilb/modules文件夹中。lsmod命令列出所有可加载的内核模块,在紧急情况下,当启动因为损坏的模块而不能启动时,可以通过修改内核启动参数来允许/禁止某些特定模块的加载(修改GRUB内核配置菜单)

    二进制兼容性

    Linux没有为内核模块提供稳定的API或ABI,这意味着不同的内核版本中的模块内部结构和功能是有区别的,这会造成兼容性问题,为了解决这个问题,需要将符号版本控制数据放置在可加载ELF模块的.modinfo部分中。在加载一个模块前,会将版本信息与正在运行的内核进行比较,如果版本信息不兼容,这个模块就不会被加载。

    安全性

    虽然可加载模块对运行的内核来说是一个方便的方法,攻击者也可能在一个受感染的系统上阻止检查他的进程或文件,从而保持对系统的控制权。许多rookit都使用这种方式控制系统。需要注意的是,无论在任何系统上,模块都不会帮助提升特权,只是可以让攻击者的入侵隐藏的更好。
    1.对于Linux
    Linux可以通过sysctl选项/proc/sys/kernel/modules_disabled禁用模块加载,initramfs系统会首先加载启动机器所需要的特定模块,然后禁用模块加载功能。

  • 相关阅读:
    数字三角形
    嵌套矩阵问题
    NKOJ1236 a^b
    历届试题 最大子阵
    【动态规划】最大连续子序列和,最大子矩阵和,最大m子段和
    历届试题 翻硬币
    历届试题 带分数
    用户模板和用户场景
    学习进度——第九周
    最大子数组——回调
  • 原文地址:https://www.cnblogs.com/call-me-dasheng/p/14343705.html
Copyright © 2020-2023  润新知