1.一种拦截原始套接字输入输出的方法,用于Linux内核,其特征在于,包括:
查找所述Linux内核中内置的原始套接字接口;
清除CPU的控制寄存器的写保护位;
将所述Linux内核中内置的原始套接字接口中的第一接收消息函数和第一发送消息函数保存到所述Linux内核中新分配的原始套接字接口中;
将第二接收消息函数和第二发送消息函数分别替换所述Linux内核中内置的原始套接字接口中的第一接收消息函数和第一发送消息函数;
还原所述CPU的控制寄存器的写保护位。
2.根据权利要求1所述的拦截原始套接字输入输出的方法,其特征在于,所述查找Linux内核中内置的原始套接字接口的过程包括:
初始化套接字接口,所述套接字接口为原始套接字类型;
注册所述套接字接口,所述套接字接口位于以SOCK_RAW为索引的双向循环链表的链表头的后面;
获取所述套接字接口的后一个套接字接口,该后一个套接字接口为所述Linux内核中内置的原始套接字接口;
注销所述套接字接口。
3.根据权利要求1所述的拦截原始套接字输入输出的方法,其特征在于,在所述将所述Linux内核中内置的原始套接字接口中的第一接收消息函数和第一发送消息函数保存到所述Linux内核中新分配的原始套接字接口中的过程之前,还包括:在所述Linux内核中新分配的原始套接字接口中分配子单元。
4.根据权利要求3所述的拦截原始套接字输入输出的方法,其特征在于,所述将所述Linux内核中内置的原始套接字接口中的第一接收消息函数和第一发送消息函数保存到所述Linux内核中新分配的原始套接字接口中的过程包括:将所述第一接收消息函数和所述第一发送消息函数保存到所述子单元中。
5.根据权利要求3所述的拦截原始套接字输入输出的方法,其特征在于,在所述还原所述CPU的控制寄存器的写保护位的过程之后,还包括:
清除所述CPU的控制寄存器的写保护位;
将所述子单元中的所述第一接收消息函数和所述第一发送消息函数分别替换所述Linux内核中内置的原始套接字接口中的所述第二接收消息函数和所述第二发送消息函数;
还原所述CPU的控制寄存器的写保护位;
释放所述子单元。
6.一种拦截原始套接字输入输出的系统,用于Linux内核,其特征在于,包括:
查找模块,用于查找所述Linux内核中内置的原始套接字接口;
写保护位清除模块,用于清除CPU的控制寄存器的写保护位;
存储模块,用于将所述Linux内核中内置的原始套接字接口中的第一接收消息函数和第一发送消息函数保存到所述Linux内核中新分配的原始套接字接口中;
第一替换模块,用于将第二接收消息函数和第二发送消息函数分别替换所述Linux内核中内置的原始套接字接口中的第一接收消息函数和第一发送消息函数;
写保护位还原模块,用于还原所述CPU的控制寄存器的写保护位。
7.根据权利要求6所述的拦截原始套接字输入输出的系统,其特征在于,所述查找模块包括:
初始化子模块,用于初始化套接字接口,所述套接字接口为原始套接字类型;
注册子模块,用于注册所述套接字接口,所述套接字接口位于以SOCK_RAW为索引的双向循环链表的链表头的后面;
获取子模块,用于获取所述套接字接口的后一个套接字接口,该后一个套接字接口为所述Linux内核中内置的原始套接字接口;
注销子模块,用于注销所述套接字接口。
8.根据权利要求6所述的拦截原始套接字输入输出的系统,其特征在于,还包括:分配模块,在所述将所述Linux内核中内置的原始套接字接口中的第一接收消息函数和第一发送消息函数保存到所述Linux内核中新分配的原始套接字接口中的过程之前,所述分配模块用于在所述Linux内核中新分配的原始套接字接口中分配子单元。
9.根据权利要求8所述的拦截原始套接字输入输出的系统,其特征在于:所述存储模块用于将所述第一接收消息函数和所述第一发送消息函数保存到所述子单元中。
10.根据权利要求8所述的拦截原始套接字输入输出的系统,其特征在于,还包括:
第二替换模块,在清除所述CPU的控制寄存器的写保护位的过程之后,所述第二替换模块用于将所述子单元中的所述第一接收消息函数和所述第一发送消息函数分别替换所述Linux内核中内置的原始套接字接口中的所述第二接收消息函数和所述第二发送消息函数;
释放模块,在还原所述CPU的控制寄存器的写保护位的过程之后,所述释放模块用于释放所述子单元。