鏈接庫(kù)中調(diào)用待調(diào)用的函數(shù)標(biāo)識(shí)對(duì)應(yīng)的第一函數(shù),第一動(dòng)態(tài)鏈接庫(kù)包括系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中的每個(gè)第二函數(shù)對(duì)應(yīng)的第一函數(shù)。
[0048]服務(wù)器的操作系統(tǒng)中包括系統(tǒng)動(dòng)態(tài)鏈接庫(kù),系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中包括多個(gè)第二函數(shù),這些第二函數(shù)都為系統(tǒng)API,每個(gè)第二函數(shù)用于執(zhí)行某一種或多種操作。應(yīng)用服務(wù)進(jìn)程如果需要執(zhí)行某個(gè)操作,則應(yīng)用服務(wù)進(jìn)程必需到系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中調(diào)用相應(yīng)的第二函數(shù),然后向調(diào)用的第二函數(shù)傳入調(diào)用參數(shù),運(yùn)行調(diào)用的第二函數(shù),使調(diào)用的第二函數(shù)根據(jù)該調(diào)用參數(shù)來(lái)執(zhí)行該操作。
[0049]例如,系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中的第二函數(shù)包括用于文件讀寫(xiě)的openO,用于內(nèi)存分配的mmap()、用于網(wǎng)絡(luò)連接的函數(shù)和用于進(jìn)程派生的函數(shù)。用于網(wǎng)絡(luò)連接的函數(shù)包括socket O 和 connect O,用于進(jìn)程派生的函數(shù)包括 execv O、execvp O、exeve O、exec ()、execleO和execlpO。如果應(yīng)用服務(wù)進(jìn)程需要讀取某個(gè)文件,則應(yīng)用服務(wù)進(jìn)程需要到系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中調(diào)用用于文件讀寫(xiě)的openO,然后將需要讀取的該文件的存儲(chǔ)路徑傳入調(diào)用的openO,該文件的存儲(chǔ)路徑即為調(diào)用參數(shù),運(yùn)行調(diào)用的openO,調(diào)用的openO根據(jù)該文件的存儲(chǔ)路徑讀取該文件,將讀取的該文件返回給應(yīng)用服務(wù)進(jìn)程。
[0050]在本發(fā)明實(shí)施例中,為系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中的每個(gè)第二函數(shù)開(kāi)發(fā)對(duì)應(yīng)的一個(gè)第一函數(shù),并事先將每個(gè)第二函數(shù)對(duì)應(yīng)的第一函數(shù)存儲(chǔ)在第一動(dòng)態(tài)鏈接庫(kù)中。對(duì)于每個(gè)第二函數(shù),該第二函數(shù)對(duì)應(yīng)的第一函數(shù)的函數(shù)標(biāo)識(shí)和名稱分別與該第二函數(shù)的函數(shù)標(biāo)識(shí)和名稱相同,但該第二函數(shù)實(shí)現(xiàn)的功能與該第二函數(shù)對(duì)應(yīng)的第一函數(shù)實(shí)現(xiàn)的功能不同。對(duì)于每個(gè)第二函數(shù)對(duì)應(yīng)的第一函數(shù),通過(guò)運(yùn)行該第一函數(shù)能夠獲取應(yīng)用服務(wù)進(jìn)程傳入的調(diào)用參數(shù),確定應(yīng)用服務(wù)進(jìn)程待執(zhí)行的操作,如果待執(zhí)行的操作為惡意操作,則可以阻止該惡意操作的執(zhí)行,如果待執(zhí)行的操作不是惡意操作,則可以從系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中調(diào)用該第一函數(shù)對(duì)應(yīng)的第二函數(shù),并使應(yīng)用服務(wù)進(jìn)程通過(guò)該第二函數(shù)執(zhí)行待執(zhí)行的操作。
[0051]例如,對(duì)于系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中的openO、mmap O和exec O等第二函數(shù),第二函數(shù)open O對(duì)應(yīng)的第一函數(shù)為openO,第二函數(shù)mmap O對(duì)應(yīng)的第一函數(shù)為mmap O,第二函數(shù)exec O對(duì)應(yīng)的第一函數(shù)為exec O。雖然第二函數(shù)的名稱與該第二函數(shù)對(duì)應(yīng)的第一函數(shù)的名稱相同,但兩者實(shí)現(xiàn)的功能完全不同。例如,第二函數(shù)openO用于讀寫(xiě)文件,而第二函數(shù)openO對(duì)應(yīng)的第一函數(shù)openO用于接收應(yīng)用服務(wù)進(jìn)程傳入的調(diào)用參數(shù),確定應(yīng)用服務(wù)進(jìn)程待執(zhí)行的操作,如果待執(zhí)行的操作為惡意操作,則阻止該惡意操作的執(zhí)行,如果待執(zhí)行的操作不是惡意操作,則第一函數(shù)open O調(diào)用其對(duì)應(yīng)的第二函數(shù)open O給應(yīng)用服務(wù)進(jìn)程,以使應(yīng)用服務(wù)進(jìn)程通過(guò)第二函數(shù)open O讀寫(xiě)文件。再如,第二函數(shù)exec O用于派生進(jìn)程,而第二 exec O對(duì)應(yīng)的第一函數(shù)exec O用于接收應(yīng)用服務(wù)進(jìn)程傳入的調(diào)用參數(shù),確定應(yīng)用服務(wù)進(jìn)程待執(zhí)行的操作,如果待執(zhí)行的操作為惡意操作,則阻止該惡意操作的執(zhí)行,如果待執(zhí)行的操作不是惡意操作,則第一函數(shù)exec O調(diào)用其對(duì)應(yīng)的第二函數(shù)exec O給應(yīng)用服務(wù)進(jìn)程,以使應(yīng)用服務(wù)進(jìn)程通過(guò)第二函數(shù)exec O派生一個(gè)新進(jìn)程。對(duì)于其他的每個(gè)第二函數(shù)以及該第二函數(shù)對(duì)應(yīng)的第一函數(shù)的含義同上述兩函數(shù)一樣,就不一一描述。
[0052]本步驟可以為:通過(guò)預(yù)加載配置文件控制應(yīng)用服務(wù)進(jìn)程從第一動(dòng)態(tài)鏈接庫(kù)中調(diào)用待調(diào)用的第一函數(shù),預(yù)加載配置文件用于存儲(chǔ)第一動(dòng)態(tài)鏈接庫(kù)的地址。
[0053]其中,當(dāng)應(yīng)用服務(wù)進(jìn)程需要調(diào)用系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中的第二函數(shù)時(shí),應(yīng)用服務(wù)進(jìn)程先從預(yù)加載配置文件中讀取預(yù)加載配置文件存儲(chǔ)的動(dòng)態(tài)鏈接庫(kù)的地址,根據(jù)讀取的動(dòng)態(tài)鏈接庫(kù)的地址向?qū)?yīng)的動(dòng)態(tài)鏈接庫(kù)發(fā)起調(diào)用請(qǐng)求,該調(diào)用請(qǐng)求攜帶待調(diào)用的函數(shù)標(biāo)識(shí),并從該動(dòng)態(tài)鏈接庫(kù)中調(diào)用待調(diào)用的函數(shù)標(biāo)識(shí)對(duì)應(yīng)的函數(shù)。
[0054]其中,最初始預(yù)加載配置文件用于存儲(chǔ)系統(tǒng)動(dòng)態(tài)鏈接庫(kù)的地址,在執(zhí)行本步驟之前,先將預(yù)加載配置文件中存儲(chǔ)的系統(tǒng)動(dòng)態(tài)鏈接庫(kù)的地址修改為第一動(dòng)態(tài)鏈接庫(kù)的地址。如此,參見(jiàn)圖2-2,在本發(fā)明實(shí)施例中,當(dāng)應(yīng)用服務(wù)進(jìn)程需要從系統(tǒng)動(dòng)態(tài)鏈接庫(kù)中調(diào)用第二函數(shù)時(shí),先從預(yù)加載配置文件中讀取到第一動(dòng)態(tài)鏈接庫(kù)的地址,根據(jù)第一動(dòng)態(tài)鏈接庫(kù)的地址發(fā)送調(diào)用請(qǐng)求給第一動(dòng)態(tài)鏈接庫(kù),該調(diào)用請(qǐng)求攜帶待調(diào)用的函數(shù)標(biāo)識(shí),并從第一動(dòng)態(tài)鏈接庫(kù)中調(diào)用待調(diào)用的標(biāo)識(shí)對(duì)應(yīng)的第一函數(shù)。
[0055]步驟202:通過(guò)調(diào)用的第一函數(shù)獲取應(yīng)用服務(wù)進(jìn)程傳入給調(diào)用的第一函數(shù)的調(diào)用參數(shù)。
[0056]其中,服務(wù)器為服務(wù)請(qǐng)求分配應(yīng)用服務(wù)進(jìn)程后,應(yīng)用服務(wù)進(jìn)程根據(jù)該服務(wù)請(qǐng)求所需要請(qǐng)求的服務(wù)生成調(diào)用參數(shù)。然后應(yīng)用服務(wù)進(jìn)程調(diào)用第一函數(shù),運(yùn)行該第一函數(shù)并將調(diào)用參數(shù)傳入給第一函數(shù)。該第一函數(shù)被運(yùn)行后,可以接收應(yīng)用服務(wù)進(jìn)程傳入的調(diào)用參數(shù)。例如,假設(shè)應(yīng)用服務(wù)進(jìn)程需要讀取某文件,則該文件的存儲(chǔ)路徑即為調(diào)用參數(shù),該應(yīng)用服務(wù)進(jìn)程從預(yù)加載配置文件中讀取到第一動(dòng)態(tài)鏈接庫(kù)的地址,根據(jù)第一動(dòng)態(tài)鏈接庫(kù)的地址定位出第一動(dòng)態(tài)鏈接庫(kù),從第一動(dòng)態(tài)鏈接庫(kù)中調(diào)用待調(diào)用的函數(shù)標(biāo)識(shí)對(duì)應(yīng)的第一函數(shù)為open O,運(yùn)行第一函數(shù)openO并將該文件的存儲(chǔ)路徑傳入給第一函數(shù)open(),第一函數(shù)open O接收該文件的存儲(chǔ)路徑。
[0057]步驟203:根據(jù)調(diào)用的該第一函數(shù)和該調(diào)用參數(shù),確定應(yīng)用服務(wù)進(jìn)程待執(zhí)行的操作。
[0058]具體地,獲取調(diào)用的該第一函數(shù)對(duì)應(yīng)的第二函數(shù),確定該第二函數(shù)所實(shí)現(xiàn)的功能,根據(jù)該功能和該調(diào)用參數(shù),確定應(yīng)用服務(wù)進(jìn)程待執(zhí)行的操作。
[0059]其中,在該第一函數(shù)被運(yùn)行時(shí),該第一函數(shù)可以獲得自身對(duì)應(yīng)的第二函數(shù)所需要實(shí)現(xiàn)的功能,根據(jù)該功能對(duì)該調(diào)用參數(shù)進(jìn)行分析,可以確定出應(yīng)用服務(wù)進(jìn)程待執(zhí)行的操作。
[0060]例如,第一函數(shù)open O對(duì)應(yīng)的第二函數(shù)open O,第二函數(shù)open O所要實(shí)現(xiàn)的功能為讀寫(xiě)文件。假設(shè)第一函數(shù)open O接收該文件的存儲(chǔ)路徑為非web (網(wǎng)頁(yè))根目錄下的存儲(chǔ)路徑,則根據(jù)第二函數(shù)openO所要實(shí)現(xiàn)的功能和該文件的存儲(chǔ)路徑可以確定應(yīng)用服務(wù)進(jìn)程待執(zhí)行的操作為讀寫(xiě)非web根目錄下的文件。
[0061]再如,假設(shè)應(yīng)用服務(wù)進(jìn)程需要派生一個(gè)新進(jìn)程,調(diào)用參數(shù)為該新進(jìn)程的進(jìn)程句柄。以及,假設(shè)在步驟202中應(yīng)用服務(wù)進(jìn)程調(diào)用的第一函數(shù)為exec O,以及傳入第一函數(shù)exec O的調(diào)用參數(shù)為該新進(jìn)程的進(jìn)程句柄。而第一函數(shù)exec O對(duì)應(yīng)的第二函數(shù)exec O所要實(shí)現(xiàn)的功能為派生進(jìn)程,所以根據(jù)第二函數(shù)execO所要實(shí)現(xiàn)的功能和該調(diào)用參數(shù)可以確定出應(yīng)用服務(wù)進(jìn)程待執(zhí)行的操作為派生一個(gè)新進(jìn)程。
[0062]步驟204:獲取該應(yīng)用服務(wù)進(jìn)程對(duì)應(yīng)的合法操作集合。
[0063]其中,每個(gè)網(wǎng)站的服務(wù)器中包括至少一個(gè)應(yīng)用服務(wù)進(jìn)程,每個(gè)應(yīng)用服務(wù)進(jìn)程對(duì)應(yīng)一個(gè)合法操作集合,該合法操作集合包括該應(yīng)用服務(wù)進(jìn)程對(duì)應(yīng)的合法操作,這些合法操作都是由技術(shù)人員事先定義的,通過(guò)這些合法操作為用戶提供服務(wù)。且定義每個(gè)應(yīng)用服務(wù)進(jìn)程對(duì)應(yīng)的合法操作集合后,可以將每個(gè)應(yīng)用服務(wù)進(jìn)程的進(jìn)程標(biāo)識(shí)與每個(gè)應(yīng)用服務(wù)進(jìn)程對(duì)應(yīng)的合法操作集合存儲(chǔ)在進(jìn)程標(biāo)識(shí)與合法操作集合的對(duì)應(yīng)關(guān)系中。
[0064]本步驟可以為:獲取該應(yīng)用服務(wù)進(jìn)程的進(jìn)程標(biāo)識(shí),根據(jù)該應(yīng)用服務(wù)進(jìn)程的進(jìn)程標(biāo)識(shí),從進(jìn)