-2

当系统调用指向某个特定文件时,我想拦截每个写入系统调用并修改写入系统调用的数据,否则执行原始写入系统调用。

现在我可以从那里修改写系统调用。另外,我想要系统调用指向的文件的名称,如何从 write syscall 中的文件描述符参数中获取它。

我已经尝试过 LD_PRELOAD 技巧,但它只适用于库调用,而不适用于系统调用。我正在使用 ubuntu 18.04。

4

1 回答 1

2

我建议您编写自己的小型设备驱动程序(我建议查看简单的其他设备驱动程序)。因此,您将有一个文件,您可以在其中实现 write/read/open/close 系统调用。这样,您可以将文件保存在文件系统中/dev/,并“拦截”文件misc dev example上的所有操作。如果您不想在内核空间中实现所有内容,您可以查看 FUSE 驱动程序(您只需将 fuse 文件系统安装在 fs 中的某个位置,您还可以控制文件操作,但现在从用户空间)fuse docs保险丝示例

于 2021-05-05T01:39:54.647 回答