一个用kld替换内核函数指针的例子
2009-05-13 03:29:51来源:未知 阅读 ()
工作目录下有两个文件,一个是Makefile,一个是我们的源文件icmphook.c。
Makefile文件的内容如下:
CODE:
[Copy to clipboard]
1 KMOD= icmphook
2 SRCS= icmphook.c
3
4 .include icmphook.c文件的内容如下:
CODE:
[Copy to clipboard]
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9
10 extern struct protosw inetsw[];
11 extern u_char ip_protox[];
12 void new_icmp_input(struct mbuf *, int);
13 void *old_icmp_input;
14
15 void new_icmp_input(struct mbuf * m, int off)
16 {
17 printf("new_icmp_input recv packet!\n");
18 ((void (*)(struct mbuf *, int))old_icmp_input)(m, off);
19 }
20
21 static int
22 load(struct module *module, int cmd, void *arg)
23 {
24 int error = 0;
25
26 switch(cmd) {
27 case MOD_LOAD:
28 uprintf("Replacing ICMP Input\n");
29 old_icmp_input = inetsw[ip_protox[IPPROTO_ICMP]].pr_input;
30 inetsw[ip_protox[IPPROTO_ICMP]].pr_input = new_icmp_input;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- (已解决)VM里面的OpenBSD怎么删除一个新添加的硬盘? 2009-05-13
- 见笑了,问一个很简单的问题 2009-05-13
- adsl+openvpn的一些问题 2009-05-13
- [FreeBSD] 添加一个分区 2009-05-13
- freebsd下安装软件使用说明 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