1.一種攔截原始套接字輸入輸出的方法,用于Linux內(nèi)核,其特征在于,包括:
查找所述Linux內(nèi)核中內(nèi)置的原始套接字接口;
清除CPU的控制寄存器的寫(xiě)保護(hù)位;
將所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的第一接收消息函數(shù)和第一發(fā)送消息函數(shù)保存到所述Linux內(nèi)核中新分配的原始套接字接口中;
將第二接收消息函數(shù)和第二發(fā)送消息函數(shù)分別替換所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的第一接收消息函數(shù)和第一發(fā)送消息函數(shù);
還原所述CPU的控制寄存器的寫(xiě)保護(hù)位。
2.根據(jù)權(quán)利要求1所述的攔截原始套接字輸入輸出的方法,其特征在于,所述查找Linux內(nèi)核中內(nèi)置的原始套接字接口的過(guò)程包括:
初始化套接字接口,所述套接字接口為原始套接字類型;
注冊(cè)所述套接字接口,所述套接字接口位于以SOCK_RAW為索引的雙向循環(huán)鏈表的鏈表頭的后面;
獲取所述套接字接口的后一個(gè)套接字接口,該后一個(gè)套接字接口為所述Linux內(nèi)核中內(nèi)置的原始套接字接口;
注銷所述套接字接口。
3.根據(jù)權(quán)利要求1所述的攔截原始套接字輸入輸出的方法,其特征在于,在所述將所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的第一接收消息函數(shù)和第一發(fā)送消息函數(shù)保存到所述Linux內(nèi)核中新分配的原始套接字接口中的過(guò)程之前,還包括:在所述Linux內(nèi)核中新分配的原始套接字接口中分配子單元。
4.根據(jù)權(quán)利要求3所述的攔截原始套接字輸入輸出的方法,其特征在于,所述將所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的第一接收消息函數(shù)和第一發(fā)送消息函數(shù)保存到所述Linux內(nèi)核中新分配的原始套接字接口中的過(guò)程包括:將所述第一接收消息函數(shù)和所述第一發(fā)送消息函數(shù)保存到所述子單元中。
5.根據(jù)權(quán)利要求3所述的攔截原始套接字輸入輸出的方法,其特征在于,在所述還原所述CPU的控制寄存器的寫(xiě)保護(hù)位的過(guò)程之后,還包括:
清除所述CPU的控制寄存器的寫(xiě)保護(hù)位;
將所述子單元中的所述第一接收消息函數(shù)和所述第一發(fā)送消息函數(shù)分別替換所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的所述第二接收消息函數(shù)和所述第二發(fā)送消息函數(shù);
還原所述CPU的控制寄存器的寫(xiě)保護(hù)位;
釋放所述子單元。
6.一種攔截原始套接字輸入輸出的系統(tǒng),用于Linux內(nèi)核,其特征在于,包括:
查找模塊,用于查找所述Linux內(nèi)核中內(nèi)置的原始套接字接口;
寫(xiě)保護(hù)位清除模塊,用于清除CPU的控制寄存器的寫(xiě)保護(hù)位;
存儲(chǔ)模塊,用于將所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的第一接收消息函數(shù)和第一發(fā)送消息函數(shù)保存到所述Linux內(nèi)核中新分配的原始套接字接口中;
第一替換模塊,用于將第二接收消息函數(shù)和第二發(fā)送消息函數(shù)分別替換所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的第一接收消息函數(shù)和第一發(fā)送消息函數(shù);
寫(xiě)保護(hù)位還原模塊,用于還原所述CPU的控制寄存器的寫(xiě)保護(hù)位。
7.根據(jù)權(quán)利要求6所述的攔截原始套接字輸入輸出的系統(tǒng),其特征在于,所述查找模塊包括:
初始化子模塊,用于初始化套接字接口,所述套接字接口為原始套接字類型;
注冊(cè)子模塊,用于注冊(cè)所述套接字接口,所述套接字接口位于以SOCK_RAW為索引的雙向循環(huán)鏈表的鏈表頭的后面;
獲取子模塊,用于獲取所述套接字接口的后一個(gè)套接字接口,該后一個(gè)套接字接口為所述Linux內(nèi)核中內(nèi)置的原始套接字接口;
注銷子模塊,用于注銷所述套接字接口。
8.根據(jù)權(quán)利要求6所述的攔截原始套接字輸入輸出的系統(tǒng),其特征在于,還包括:分配模塊,在所述將所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的第一接收消息函數(shù)和第一發(fā)送消息函數(shù)保存到所述Linux內(nèi)核中新分配的原始套接字接口中的過(guò)程之前,所述分配模塊用于在所述Linux內(nèi)核中新分配的原始套接字接口中分配子單元。
9.根據(jù)權(quán)利要求8所述的攔截原始套接字輸入輸出的系統(tǒng),其特征在于:所述存儲(chǔ)模塊用于將所述第一接收消息函數(shù)和所述第一發(fā)送消息函數(shù)保存到所述子單元中。
10.根據(jù)權(quán)利要求8所述的攔截原始套接字輸入輸出的系統(tǒng),其特征在于,還包括:
第二替換模塊,在清除所述CPU的控制寄存器的寫(xiě)保護(hù)位的過(guò)程之后,所述第二替換模塊用于將所述子單元中的所述第一接收消息函數(shù)和所述第一發(fā)送消息函數(shù)分別替換所述Linux內(nèi)核中內(nèi)置的原始套接字接口中的所述第二接收消息函數(shù)和所述第二發(fā)送消息函數(shù);
釋放模塊,在還原所述CPU的控制寄存器的寫(xiě)保護(hù)位的過(guò)程之后,所述釋放模塊用于釋放所述子單元。