- 论坛徽章:
- 0
|
本帖最后由 anhongkui 于 2010-11-24 09:23 编辑
在NF_IP_LOCAL_OUT注册了一个hook, 想将一个包变成两个包。
- #ifndef __KERNEL__
- #define __KERNEL__
- #endif
- #ifndef MODULE
- #define MODULE
- #endif
- #include <linux/module.h>
- #include <linux/skbuff.h>
- #include <linux/netdevice.h>
- #include <linux/config.h>
- #include <linux/ip.h>
- #include <linux/tcp.h>
- #include <linux/udp.h>
- #include <net/ip.h>
- #include <linux/netfilter_ipv4.h>
- static unsigned int doit(unsigned int hooknum, struct sk_buff **skb,
- const struct net_device *in,
- const struct net_device *out,
- int (*okfn) (struct sk_buff *))
- {
- struct sk_buff *newskb = skb_copy(*skb, GFP_ATOMIC);
- if (newskb != NULL) {
- okfn(newskb);
- }
- return NF_ACCEPT;
- }
- static struct nf_hook_ops mynetfilter = {
- {NULL, NULL},
- doit,
- PF_INET,
- /* NF_IP_PRE_ROUTING, */
- NF_IP_LOCAL_OUT,
- #if 1
- INT_MIN
- #else
- NF_IP_PRI_FILTER - 1
- #endif
- };
- int init_module(void) //注册模块函数
- {
- return nf_register_hook(&mynetfilter);
- }
- void cleanup_module(void)
- {
- nf_unregister_hook(&mynetfilter);
- }
- MODULE_LICENSE("GPL");
复制代码 这样子,只要 insmod test.o(2.4内核),且有数据包,则直接死机
因为设备无法接显示器,所以无法查错误。
希望有人能告诉我怎么回事,谢谢啦。
编译:- gcc -c mynf.c -D__KERNEL__ -DMODULE -I /usr/src/linux-2.4/include -O -Wall
复制代码 |
|