freebsd 第一个程序--创建系统调用并调用
2009-05-13 14:28:09来源:未知 阅读 ()
先完成一个内核模块,主要是按照rootkit来的,小做修改,因为我用的FreeBSD毕竟是7.0了,
也是些不同了。
example.c
#include sys/types.h>
#include sys/param.h>
#include sys/proc.h>
#include sys/module.h>
#include sys/sysent.h>
#include sys/kernel.h>
#include sys/systm.h>
#include sys/sysproto.h>
/* The system call's arguments. */
struct example_args {
char *str;
};
/* The system call function. */
static int
example(struct thread *td, void *syscall_args)
{
struct example_args *uap;
uap = (struct example_args *)syscall_args;
printf("%s\n", uap->str);
return(0);
}
/* The sysent for the new system call. */
static struct sysent example_sysent = {
1, /* number of arguments */
example, /* implementing function */
0,
NULL,
0
};
/* The offset in sysent[] where the system call is to be allocated. */
static int offset = NO_SYSCALL;
/* The function called at load/unload. */
static int
load(struct module *module, int cmd, void *arg)
{
int error = 0;
switch (cmd) {
case MOD_LOAD:
uprintf("System call loaded at offset %d.\n", offset);
break;
case MOD_UNLOAD:
uprintf("System call unloaded from offset %d.\n", offset);
break;
default:
error = EOPNOTSUPP;
break;
}
return(error);
}
SYSCALL_MODULE(example, &offset, &example_sysent, load, NULL);
其实我倒喜欢BSD的Makefile了,简单,呵呵
Makefile
KMOD= example # Name of KLD to build.
SRCS= example.c # List of source files.
.include bsd.kmod.mk>
这样算一个模块就写完了,而且是新加了系统调用的哦。
make完了,kldload ./example.ko 算是load module了。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- ACL 疑问 2009-05-13
- 做完raid之后,系统无法启动,各位兄弟帮帮忙吧 2009-05-13
- (已解决)VM里面的OpenBSD怎么删除一个新添加的硬盘? 2009-05-13
- freebsd系统共享上网问题! 2009-05-13
- PC-BSD 7.1不能登录 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash