如何在freebsd中调用系统调用?

时间:2015-05-06 17:45:59

标签: freebsd

我创建了一个与/usr/share/examples/kld/syscall/module/syscall.c相同的系统调用,但消息稍有变化。 我使用了kldload和模块加载。现在我想打电话给系统调用。 这个系统调用号码是什么,所以我可以调用它? 或者这个系统调用的方式是什么?

2 个答案:

答案 0 :(得分:1)

我建议你看一下Designing BSD rootkit,这就是我在FreeBSD上学习内核编程的方法,甚至还有一个部分讲述了制作自己的系统调用。

答案 1 :(得分:0)

好吧,如果你检查/ usr / share / examples / kld / syscall目录,你会看到它包含一个测试程序.....但是,嘿,让我们假设程序不存在。

让我们看一下模块本身的一部分:

/*
 * The offset in sysent where the syscall is allocated.
 */
static int offset = NO_SYSCALL;

[..]
        case MOD_LOAD :
            printf("syscall loaded at %d\n", offset);
            break;

该模块在加载时打印系统调用号码,所以现在的工作是学习如何调用它......谷歌上的'freebsd call syscall'搜索...

显示:http://www.freebsd.cz/doc/en/books/developers-handbook/x86-system-calls.html(虽然可以说无法在amd64上使用)和.. https://www.freebsd.org/cgi/man.cgi?query=syscall&sektion=2 - 一个函数的手册页,允许您调用任意系统调用。

我强烈建议你自己做一些挖掘。如果不这样做,绝对没有办法编写任何内核代码。