max*_*lya 2 linux memory kernel integrity kernel-module
我正在编写一个内核模块,通过控制校验和来检查代码段的完整性以便运行任务.我遇到了几个障碍:
module_list如果变量没有被内核导出(如果没有这样的符号ksyms),我如何获取变量?我可以看到调用lsmod命令的所有模块,所以如何在模块中获取它?完全支持自修改代码.它没有任何问题,它被用于各种各样的事情.您认为代码是常量的假设是不正确的.可能是,但可能不是.
一个典型的例子是SMP与UP系统.例如,在Pentium 4类Xeon机器上,解锁增量可比锁定增量少60个周期.仅在SMP计算机上需要锁定的增量.为了使相同的代码在UP和SMP机器上工作而没有运行时条件的开销,通常使用自修改代码.在lock指令的位置,使用非法操作码ud2.捕获非法指令中断,并在SMP系统和UP系统上ud2替换.locknop
内核导出模块接口.出口是:
__module_text_address __symbol_get symbol_put_addr use_module
module_layout module_put __module_put_and_exit module_refcount
register_module_notifier __symbol_put unregister_module_notifier module_get
Run Code Online (Sandbox Code Playgroud)
/proc/modules如果你真的想要,你也可以解析.