Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 如何使用LSM实现自己的钩子函数?_Linux Kernel - Fatal编程技术网

Linux kernel 如何使用LSM实现自己的钩子函数?

Linux kernel 如何使用LSM实现自己的钩子函数?,linux-kernel,Linux Kernel,我正在学习一些关于访问控制的知识。 并尝试用LSMAPI实现自己的钩子函数。 但是我发现我必须在内核版本3.1.4中的内核源代码中进行编码。 那么,我如何开始呢 有人能举个例子吗? 非常感谢 PS:我发现了一些例子,但是在内核版本2.6.20中。由于LSM已被修改,这些示例无法工作 自2.6.35起,您无法加载LSM模块(请参阅c1e992b99603a84d7debb188542b64f2d9232c07提交)。因此,在内核之外获取LSM不是一个有效的任务。但您始终可以尝试在运行时反汇编内核,

我正在学习一些关于访问控制的知识。 并尝试用LSMAPI实现自己的钩子函数。 但是我发现我必须在内核版本3.1.4中的内核源代码中进行编码。 那么,我如何开始呢

有人能举个例子吗? 非常感谢


PS:我发现了一些例子,但是在内核版本2.6.20中。由于LSM已被修改,这些示例无法工作

自2.6.35起,您无法加载LSM模块(请参阅c1e992b99603a84d7debb188542b64f2d9232c07提交)。因此,在内核之外获取LSM不是一个有效的任务。但您始终可以尝试在运行时反汇编内核,并找到所有私有符号,如指针

例如,查看导出的
security\u sb\u copy\u data
符号:

int security_sb_copy_data(char *orig, char *copy)
{
        return security_ops->sb_copy_data(orig, copy);
}
EXPORT_SYMBOL(security_sb_copy_data);
它可能看起来是这样的(x86_64):

因此,
0xFFFFFF81A77850
地址就是确切的
security\u ops
指针。让我们看看:

(gdb) x/s* 0xffffffff81a77850
0xffffffff81850fa0:  "default"
好了,现在我们有了有效的
security\u ops
指针,可以在内核之外使用LSM做任何事情


p.S.
有一个很棒的Linux内核安全项目——AKARI。它实现了一些有趣的私有符号解析方法,而无需反汇编(有关详细信息,请参见)。

自2.6.35以来,您无法加载LSM模块(请参见c1e992b99603a84d7debb188542b64f2d9232c07提交)。因此,在内核之外获取LSM不是一个有效的任务。但您始终可以尝试在运行时反汇编内核,并找到所有私有符号,如指针

例如,查看导出的
security\u sb\u copy\u data
符号:

int security_sb_copy_data(char *orig, char *copy)
{
        return security_ops->sb_copy_data(orig, copy);
}
EXPORT_SYMBOL(security_sb_copy_data);
它可能看起来是这样的(x86_64):

因此,
0xFFFFFF81A77850
地址就是确切的
security\u ops
指针。让我们看看:

(gdb) x/s* 0xffffffff81a77850
0xffffffff81850fa0:  "default"
好了,现在我们有了有效的
security\u ops
指针,可以在内核之外使用LSM做任何事情


p.S.
有一个很棒的Linux内核安全项目——AKARI。它实现了有趣的私有符号解析方法,无需反汇编(详见)。

非常感谢~我发现AKARI基于Tomoyo?好的,我试试。非常感谢~我发现AKARI是基于Tomoyo的?好的,我试试看。