,所述報(bào)錯(cuò)信息可以包括以下至少一種:
[0149]應(yīng)用程序標(biāo)識(shí)、版本信息、出錯(cuò)方式。
[0150]應(yīng)用程序標(biāo)識(shí)可以是能夠代表一個(gè)唯一確定的應(yīng)用程序的信息,例如,應(yīng)用程序名稱、MD5 (Message-Digest Algorithm 5,信息摘要算法 5)、Hash (哈希)值等等。
[0151]版本信息可以記錄指應(yīng)用程序的版本的信息。每次應(yīng)用程序的版本的更新都可能會(huì)涉及內(nèi)部代碼的修改,應(yīng)用程序的功能以及性能在每個(gè)版本中都會(huì)有所不同。
[0152]出錯(cuò)方式可以如何應(yīng)用程序的出現(xiàn)何種錯(cuò)誤的信息,例如寫(xiě)內(nèi)存錯(cuò)誤系統(tǒng)會(huì)提示:「“0X ???????? ”指令引用的“0x00000000”內(nèi)存,該內(nèi)存不能為“read”或“written”」。
[0153]當(dāng)然,上述報(bào)錯(cuò)信息只是作為示例,在實(shí)施本發(fā)明實(shí)施例時(shí),可以根據(jù)實(shí)際情況設(shè)置其他報(bào)錯(cuò)信息,本發(fā)明實(shí)施例對(duì)此不加以限制。
[0154]第二系統(tǒng)環(huán)境信息可以為記錄其他終端的系統(tǒng)環(huán)境相關(guān)的信息。
[0155]在本發(fā)明實(shí)施例的一種可選示例中,所述第二系統(tǒng)環(huán)境信息可以包括以下至少一種:
[0156]第二系統(tǒng)版本信息、第二啟動(dòng)項(xiàng)信息、第二應(yīng)用程序信息。
[0157]第二系統(tǒng)版本信息可以記錄指系統(tǒng)環(huán)境的版本的信息,例如,Windows xp、Windows 2000 等等。
[0158]第二啟動(dòng)項(xiàng)信息可以記錄系統(tǒng)環(huán)境的啟動(dòng)項(xiàng)的信息,可以包括允許啟動(dòng)的啟動(dòng)項(xiàng),禁止啟動(dòng)的啟動(dòng)項(xiàng)。
[0159]第二應(yīng)用程序信息可以記錄在系統(tǒng)環(huán)境中安裝的應(yīng)用程序的信息。
[0160]當(dāng)然,上述第二系統(tǒng)環(huán)境信息只是作為示例,在實(shí)施本發(fā)明實(shí)施例時(shí),可以根據(jù)實(shí)際情況設(shè)置其他第二系統(tǒng)環(huán)境信息,例如,網(wǎng)絡(luò)信息等等,本發(fā)明實(shí)施例對(duì)此不加以限制。
[0161]在本發(fā)明的一種可選實(shí)施例中,所述特征啟動(dòng)項(xiàng)可以通過(guò)以下方式查找:
[0162]子步驟S21,檢測(cè)在所述第二系統(tǒng)版本信息和/或所述第二應(yīng)用程序信息對(duì)應(yīng)的系統(tǒng)環(huán)境,運(yùn)行或啟動(dòng)所述應(yīng)用程序標(biāo)識(shí)和/或所述版本信息對(duì)應(yīng)的應(yīng)用程序,引起所述出錯(cuò)信息所被禁止啟動(dòng)的啟動(dòng)項(xiàng)。
[0163]在本發(fā)明實(shí)施例中,可以根據(jù)其他終端上報(bào)的報(bào)錯(cuò)信息(如應(yīng)用程序標(biāo)識(shí)、版本信息、出錯(cuò)方式)和第二系統(tǒng)環(huán)境信息(如第二系統(tǒng)版本信息、第二啟動(dòng)項(xiàng)信息、第二應(yīng)用程序信息),查找引起該報(bào)錯(cuò)信息,被錯(cuò)誤禁止啟動(dòng)的第一啟動(dòng)項(xiàng)。
[0164]例如,在服務(wù)器中構(gòu)建應(yīng)用程序(如應(yīng)用程序標(biāo)識(shí)、版本信息)和系統(tǒng)環(huán)境的場(chǎng)景(如第二系統(tǒng)版本信息、第二啟動(dòng)項(xiàng)信息、第二應(yīng)用程序信息),針對(duì)當(dāng)前所有禁用的啟動(dòng)項(xiàng)逐個(gè)啟用,再啟動(dòng)、運(yùn)行出現(xiàn)錯(cuò)誤的應(yīng)用程序,判斷是否出現(xiàn)相同的錯(cuò)誤,以判斷哪個(gè)啟動(dòng)項(xiàng)被禁用導(dǎo)致出現(xiàn)問(wèn)題。
[0165]在本發(fā)明的一種可選實(shí)施中,所述第二系統(tǒng)環(huán)境信息與所述第一系統(tǒng)環(huán)境信息可以通過(guò)以下方式進(jìn)行匹配:
[0166]子步驟S31,判斷第二系統(tǒng)版本信息、第二啟動(dòng)項(xiàng)信息、第二應(yīng)用程序信息中的至少一者,與對(duì)應(yīng)的第一系統(tǒng)版本信息、第一啟動(dòng)項(xiàng)信息、第一應(yīng)用程序信息中的至少一者是否匹配;若是,則執(zhí)行子步驟S32 ;
[0167]子步驟S32,判斷所述第二系統(tǒng)環(huán)境信息與所述第一系統(tǒng)環(huán)境信息匹配。
[0168]在本發(fā)明實(shí)施例中,第二系統(tǒng)版本信息可以與第一系統(tǒng)版本信息進(jìn)行匹配,第二啟動(dòng)項(xiàng)信息可以與第一啟動(dòng)項(xiàng)信息進(jìn)行匹配,第二應(yīng)用程序信息可以與第一應(yīng)用程序信息進(jìn)行匹配,在這三組匹配中至少一組匹配成功,可以認(rèn)為第二系統(tǒng)環(huán)境信息與第一系統(tǒng)環(huán)境信息匹配。
[0169]步驟303,判斷所述應(yīng)用程序和/或啟動(dòng)項(xiàng)為關(guān)聯(lián)啟動(dòng)項(xiàng);
[0170]若第二系統(tǒng)環(huán)境信息與第一系統(tǒng)環(huán)境信息匹配,則可以判斷當(dāng)前終端的新增的應(yīng)用程序和/或啟動(dòng)項(xiàng)的系統(tǒng)環(huán)境與特征啟動(dòng)項(xiàng)的系統(tǒng)環(huán)境相同或相似,若當(dāng)前終端新增的應(yīng)用程序和/或啟動(dòng)項(xiàng)與在先采集的特征啟動(dòng)項(xiàng)匹配(如啟動(dòng)項(xiàng)標(biāo)識(shí)相同)時(shí),則可以認(rèn)為該新增的應(yīng)用程序和/或啟動(dòng)項(xiàng)為頑固啟動(dòng)項(xiàng)。
[0171]步驟304,當(dāng)所述應(yīng)用程序和/或啟動(dòng)項(xiàng)為關(guān)聯(lián)啟動(dòng)項(xiàng)時(shí),允許所述啟動(dòng)項(xiàng)啟動(dòng)。
[0172]在本發(fā)明實(shí)施例中,特征啟動(dòng)項(xiàng)的處理方式可以作為當(dāng)前終端新增的應(yīng)用程序和/或啟動(dòng)項(xiàng)處理方式的參考。
[0173]若當(dāng)前終端新增的應(yīng)用程序和/或啟動(dòng)項(xiàng)與特征啟動(dòng)項(xiàng)匹配,禁止前終端新增的應(yīng)用程序和/或啟動(dòng)項(xiàng)啟動(dòng),則可能出現(xiàn)與禁止特征啟動(dòng)項(xiàng)所引起的錯(cuò)誤相同的問(wèn)題,為避免該錯(cuò)誤的出現(xiàn),可以允許新增的應(yīng)用程序和/或啟動(dòng)項(xiàng)啟動(dòng)。
[0174]例如,在當(dāng)前終端的系統(tǒng)環(huán)境和其他終端的系統(tǒng)環(huán)境安裝了相同的應(yīng)用程序,該應(yīng)用程序依賴于特征啟動(dòng)項(xiàng),禁止該特征啟動(dòng)項(xiàng)啟動(dòng),則可能引起錯(cuò)誤,若在當(dāng)前終端的系統(tǒng)環(huán)境中禁止與特征啟動(dòng)項(xiàng)匹配(如相同)的應(yīng)用程序和/或啟動(dòng)項(xiàng)啟動(dòng),則可能引起相同的錯(cuò)誤。
[0175]在本發(fā)明的一種可選實(shí)施例中,若目標(biāo)啟動(dòng)項(xiàng)為頑固啟動(dòng)項(xiàng),參照?qǐng)D4所示的步驟流程圖,終端可以通過(guò)以下方式禁止目標(biāo)啟動(dòng)項(xiàng)啟動(dòng):
[0176]步驟401,獲取與目標(biāo)啟動(dòng)項(xiàng)相關(guān)的啟動(dòng)項(xiàng)目的更新信息;
[0177]需要說(shuō)明的是,所述目標(biāo)啟動(dòng)項(xiàng)可以為指定的需禁止自啟動(dòng)的應(yīng)用,其實(shí)質(zhì)可以為操作系統(tǒng)中的啟動(dòng)項(xiàng)。
[0178]有些應(yīng)用程序?yàn)榱擞?彈廣告、修改瀏覽器主頁(yè)等)而惡意設(shè)置為啟動(dòng)項(xiàng),在操作系統(tǒng)啟動(dòng)時(shí)自啟動(dòng),在發(fā)現(xiàn)時(shí)用戶一般可以通過(guò)安全工具或者應(yīng)用程序管理工具等方式進(jìn)行禁止。
[0179]但是,某些惡意的應(yīng)用程序具有變化快、功能復(fù)雜等特性,難以禁止自啟動(dòng),例如,在被禁止后,今天回寫(xiě)一個(gè)服務(wù),第二天又新加了另一個(gè)服務(wù)回寫(xiě),不斷擴(kuò)展和變化,以保持其隨操作系統(tǒng)的啟動(dòng)而自啟動(dòng)。
[0180]在本發(fā)明實(shí)施例中,可以在某一設(shè)備,如服務(wù)器(可以包括云服務(wù)器)維護(hù)最新版本的配置文件,該配置文件可以記錄處理啟動(dòng)項(xiàng)的信息。
[0181]若發(fā)現(xiàn)無(wú)法禁止啟動(dòng)項(xiàng)的原因,則可以進(jìn)行對(duì)應(yīng)的處理并更新配置文件,發(fā)送至全網(wǎng)的客戶端中,以更新客戶端本地的配置文件,實(shí)現(xiàn)該啟動(dòng)項(xiàng)的全網(wǎng)快速禁止。
[0182]在一種情形中,該更新信息可以為增量文件。
[0183]客戶端本地可以存儲(chǔ)有舊版本的配置文件,在服務(wù)器中可以存儲(chǔ)最新版本的配置文件,服務(wù)器可以針對(duì)舊版本的配置文件和新版本的配置文件,計(jì)算出這兩者之間的差異,生成增量文件,發(fā)送至客戶端。
[0184]在另一種情形中,該更新信息可以為完整文件。
[0185]服務(wù)器可以將最新版本的配置文件的更新信息完整發(fā)送至客戶端。
[0186]在實(shí)際應(yīng)用中,服務(wù)器可以主動(dòng)將配置文件的更新信息推送至全網(wǎng)的客戶端。例如,服務(wù)器可以定時(shí)(如每天6時(shí)、12時(shí)等)將配置文件的更新信息推送至全網(wǎng)的客戶端,服務(wù)器也可以不定時(shí)(如配置文件更新時(shí))將配置文件的更新信息推送至全網(wǎng)的客戶端。
[0187]客戶端也可以主動(dòng)請(qǐng)求獲取配置文件的更新信息,服務(wù)器響應(yīng)客戶端的請(qǐng)求,將配置文件發(fā)的更新信息送至客戶端。例如,客戶端可以定時(shí)(如每天6時(shí)、12時(shí)等)向服務(wù)器發(fā)送請(qǐng)求,客戶端也可以不定時(shí)(如客戶端剛啟動(dòng),操作系統(tǒng)處于的系統(tǒng)資源、帶寬占用較少的狀態(tài)時(shí))向服務(wù)器發(fā)送請(qǐng)求。
[0188]當(dāng)然,本發(fā)明實(shí)施例還可以通過(guò)其他方式獲取配置文件,例如,通過(guò)中轉(zhuǎn)服務(wù)器進(jìn)行分發(fā),本發(fā)明實(shí)施例對(duì)此不加以限制。
[0189]步驟402,根據(jù)所述啟動(dòng)項(xiàng)目的更新信息更新配置文件;
[0190]若該更新信息為增量文件,則客戶端可以在舊版本的配置文件的基礎(chǔ)之上寫(xiě)入增量文件,獲得最新版本的配置文件。
[0191]若該更新信息為完整文件,則客戶端可以將最新版本的配置文件的更新信息整體替本地的舊版本的配置文件。
[0192]當(dāng)然,本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際需要設(shè)置配置文件,配置文件中除了啟動(dòng)項(xiàng)目外,還可以寫(xiě)入其他信息,本發(fā)明實(shí)施例對(duì)此不加以限制。
[0193]步驟403,在操作系統(tǒng)啟動(dòng)時(shí),讀取所述配置文件中目標(biāo)啟動(dòng)項(xiàng)的啟動(dòng)項(xiàng)目;
[0194]在具體實(shí)現(xiàn)中,所述目標(biāo)啟動(dòng)項(xiàng)可以包括在先進(jìn)行禁止啟動(dòng)操作,且禁止啟動(dòng)失敗的啟動(dòng)項(xiàng)。
[0195]此種情形下,啟動(dòng)項(xiàng)在先通過(guò)被禁止啟動(dòng),但是在運(yùn)行時(shí)(關(guān)機(jī)前)會(huì)進(jìn)行注冊(cè)表回寫(xiě)、服務(wù)回寫(xiě),再下次操作系統(tǒng)啟動(dòng)時(shí)依然會(huì)自啟動(dòng),導(dǎo)致禁止啟動(dòng)失敗,這些啟動(dòng)項(xiàng)也稱為頑固啟動(dòng)項(xiàng)。
[0196]本發(fā)明實(shí)施例在操作系統(tǒng)啟動(dòng)時(shí),讀取配置文件中的啟動(dòng)項(xiàng)目,以禁止啟動(dòng)該啟動(dòng)項(xiàng)目對(duì)應(yīng)的目標(biāo)啟動(dòng)項(xiàng)。
[0197]步驟404,按照所述配置文件中的啟動(dòng)項(xiàng)目禁止對(duì)應(yīng)的目標(biāo)啟動(dòng)項(xiàng)啟動(dòng)。
[0198]本發(fā)明實(shí)施例在操作系統(tǒng)啟動(dòng)時(shí),禁止啟動(dòng)項(xiàng)標(biāo)識(shí)對(duì)應(yīng)的目標(biāo)啟動(dòng)項(xiàng)啟動(dòng)。
[0199]本發(fā)明實(shí)施例通過(guò)目標(biāo)啟動(dòng)項(xiàng)相關(guān)的啟動(dòng)項(xiàng)目的更新信息對(duì)配置文件進(jìn)行更新,在操作系統(tǒng)啟動(dòng)時(shí),讀取配置文件中目標(biāo)啟動(dòng)項(xiàng)相關(guān)的啟動(dòng)項(xiàng)目,以禁止對(duì)應(yīng)的啟動(dòng)項(xiàng)啟動(dòng),通過(guò)在某一個(gè)設(shè)備(如服務(wù)器)維護(hù)配置文件,不僅減少了本地對(duì)配置文件維護(hù)的資源消耗,而且該設(shè)備(如服務(wù)器)可以快速對(duì)啟動(dòng)項(xiàng)的行為變化做出反應(yīng)對(duì)配置文件進(jìn)行修改,保證了行為配置文件的準(zhǔn)確性,提高了本地禁止啟動(dòng)項(xiàng)啟動(dòng)的覆蓋率和準(zhǔn)確率,實(shí)現(xiàn)全網(wǎng)的快速禁止。
[0200]在本發(fā)明的一種可選實(shí)施例中,步驟404可以包括如下子步驟:
[0201]子步驟S41,在操作系統(tǒng)的內(nèi)核模式中攔截所述啟動(dòng)項(xiàng)目的調(diào)用,以禁止對(duì)應(yīng)的目標(biāo)啟動(dòng)項(xiàng)啟動(dòng);
[0202]在實(shí)際應(yīng)用中,CPU指令從RingO到Ring3分為4個(gè)特權(quán)級(jí),在Windows操作系統(tǒng)中,可以使用其中的RingO和Ring3這兩個(gè)級(jí)別,Ring3即用戶模式,RingO即內(nèi)核模式。
[0203]—般應(yīng)用程序都運(yùn)行在Ring3下,只能調(diào)用系統(tǒng)提供的API (Applicat1n ProgramInterface,應(yīng)用程序編程接口),操作系統(tǒng)工作在RingO層,可以訪問(wèn)所有層的數(shù)據(jù)。
[0204]本發(fā)明實(shí)施例中,可以獲取內(nèi)核模式的權(quán)限,操作系統(tǒng)啟動(dòng)時(shí),可以在其內(nèi)核模式中攔截啟動(dòng)項(xiàng)。
[0205]在本發(fā)明實(shí)施例的一種可選示例中,子步驟S41可以包括如下子步驟:
[0206]子步驟S411,在操作系統(tǒng)的內(nèi)核模式中掛鉤指定的應(yīng)用程序編程接口,以攔截所述啟動(dòng)項(xiàng)目的調(diào)用。
[0207]實(shí)際上,一個(gè)應(yīng)用程序如果要實(shí)現(xiàn)其自身的功能要通過(guò)接口調(diào)用操作系統(tǒng)提供的功能函數(shù),在Windows操作系統(tǒng)中一般是通過(guò)DLL (Dynamic Link Library,動(dòng)態(tài)鏈接庫(kù))里的API提供,因此一個(gè)應(yīng)用程序有怎么樣的行為(操作),通過(guò)查看其調(diào)用了什么樣的API就大概清楚了。
[0208]因此,作為本發(fā)明實(shí)施例的一種優(yōu)選示例,可以通過(guò)在操作系統(tǒng)內(nèi)核模式(RingO)中來(lái)掛鉤(HOOK)操作系統(tǒng)的API,檢測(cè)一個(gè)進(jìn)程的創(chuàng)建操作。
[0209]啟動(dòng)項(xiàng)在創(chuàng)建時(shí),通常會(huì)創(chuàng)建相應(yīng)的進(jìn)程,而進(jìn)程創(chuàng)建是一件相當(dāng)復(fù)雜的事情,它包含相當(dāng)多的工作,為了啟動(dòng)一個(gè)進(jìn)程,可以使用下列步驟:
[0210]1、可執(zhí)行文件被以FILE_EXE⑶TE存取方式打開(kāi)。
[0211]2、可執(zhí)行映像被裝載進(jìn)RAM。
[0212]3、建立進(jìn)程執(zhí)行