需要有一点的内核源码经验,比如说对于read操作,源码如下:

在这里当发起read系统调用后,就会进入到sys read,在sys read中会调用vfs read函数,在vfs read的参数中正好有我们需要过滤的信息,那么就可以把vfs_ read当做一个hook点。
对于第二个问题:
如何Hook?这里介绍两种方式:
第一种方式:直接进行二进制替换,将call指令的操作数替换为hook函数的地址。

第二种方式:Linux内核提供的kprobes机制。
其原理是在hook点注入int 3(x86)的机器码,让cpu运行到这里的时候会触发sig trap信号,然后将用户自定义的hook函数注入到sig trap的回调函数中,达到触发hook函数的目的。这个其实也是调试器的原理。
LSM
LSM是Linux Secrity Module的简称,即linux安全模块。是一种通用的Linux安全框架,具有效率高,简单易用等特点。原理如下:
LSM








