Syscall实现内核模块2.6

发布于 2024-10-18 08:43:52 字数 295 浏览 5 评论 0原文

经过一些阅读后,我开始了解到,在 2.6 中通过 LKM 添加新的系统调用变得更加困难。系统调用表似乎不再导出,因此(不可能?)在运行时插入新的调用。

我想要实现的目标如下。

我有一个正在执行特定任务的内核模块。 该任务取决于用户登陆进程应提供的输入。 该信息需要到达模块。 为此,我将引入一个新的系统调用,它在内核模块中实现,并可从用户态进程调用。

如果我必须重新编译内核才能添加新的系统调用,我还需要在内核模块之外编写实际的系统调用逻辑,对吗?

还有其他方法可以做到这一点吗?

干杯, 埃克奈

after doing some reading I came to understand that adding a new syscall via a LKM has gotten harder in 2.6. It seems that the syscall table is not exported any longer, therefore making it (impossible?) to insert a new call at runtime.

The stuff I want to achieve is the following.

I have a kernel module which is doing a specific task.
This task depends on input which should be provided by a user land process.
This information needs to reach the module.
For this purpose I would introduce a new syscall which is implemented in the kernel module and callable from the user land process.

If I have to recompile the kernel in order to add my new syscall, I would also need to write the actual syscall logic outside of the kernel module, correct?

Is there another way to do this?

Cheers,
eeknay

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

划一舟意中人 2024-10-25 08:43:52

系统调用不是此类工作的正确接口。至少,这就是内核开发人员使添加系统调用变得困难的原因。

有很多不同的方法可以在用户空间和内核模块之间移动数据:procsysfs 伪文件系统、char 设备接口(使用读或写或 ioctl)、或本地伪网络接口netlink

您选择哪一种取决于您要发送的数据类型的数量。如果您打算仅传递少量数据,则可能应该只使用 proc/sysfs;对于大批量传输,char 设备或 netlink 更适合。

Syscalls are not the correct interface for this sort of work. At least, that's the reason kernel developers made adding syscalls difficult.

There are lots of different ways to move data between userspace and a kernel module: the proc and sysfs pseudo-filesystems, char device interface (using read or write or ioctl), or the local pseudo-network interface netlink.

Which one you choose depends on the amount of type of data you want to send. You should probably only use proc/sysfs if you intend to pass only tiny amounts of data; for big bulk transfers char device or netlink are better suited.

猛虎独行 2024-10-25 08:43:52

不可能——不。
AV 模块和 Rootkit 一直在这样做。

Impossible -- no.
AV modules and rootkits do it all the time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文