欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種軟件自我保護(hù)的方法

文檔序號:6612789閱讀:1191來源:國知局

專利名稱::一種軟件自我保護(hù)的方法
技術(shù)領(lǐng)域
:本發(fā)明涉及軟件安全,尤其涉及一種全方位的軟件自我保護(hù)的方法。
背景技術(shù)
:計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展極大地促進(jìn)了信息交互。但是,與此同時(shí),計(jì)算機(jī)病毒也伴隨技術(shù)的發(fā)展而不斷地演化更新,時(shí)至今日,計(jì)算機(jī)病毒已經(jīng)嚴(yán)重威脅到了人們對計(jì)算機(jī)的正常使用。由此,如何防范病毒侵襲已然成為人們關(guān)注的一個(gè)焦點(diǎn)。隨著反病毒技術(shù)的發(fā)展,病毒的手段也在不斷變化,二者之間的對抗也愈演愈烈。病毒對抗安全軟件的手法也從變形、隱藏而轉(zhuǎn)變?yōu)楦苯拥钠茐?,試圖通過破壞安全軟件的部分或全部功能來達(dá)到對抗的目的。目前的各類安全軟件在自我保護(hù)方面,通常的保護(hù)手段是通過文件監(jiān)控防止病毒對文件的刪除、修改等操作,這種單一的保護(hù)措施難以防護(hù)不斷升級的惡意程序?qū)τ诎踩浖钠茐摹K?,針對病毒發(fā)展的這種趨勢,迫切需要一種軟件自我保護(hù)的方法來保護(hù)安全軟件自身不受破壞,從而更有效地發(fā)現(xiàn)和清除惡意程序。
發(fā)明內(nèi)容總結(jié)上述問題,我們可以看到,就軟件自我保護(hù)而言,全面地選擇可能被各種病毒侵襲的對象來進(jìn)行防護(hù)是至關(guān)重要的,從而在各個(gè)方面全方位地保護(hù)安全軟件自身不受病毒的破壞。因此,本發(fā)明提供了一種全方位的軟件自我防護(hù)方法,包括建立多個(gè)鉤子來監(jiān)控多個(gè)可用于攻擊受保護(hù)軟件的操作請求;當(dāng)所述多個(gè)鉤子中的至少之一攔截到相關(guān)聯(lián)的操作請求時(shí),判斷所攔截到的操作請求是否與受保護(hù)軟件有關(guān)如果有關(guān),則拒絕所攔截到的操作請求,如果無關(guān),則允許所攔截到的操作請求;其中,所述多個(gè)可用于攻擊受保護(hù)軟件的操作請求包括可用于篡改文件的操作請求;可用于修改內(nèi)存、讀取內(nèi)存、鎖定內(nèi)存、修改內(nèi)存屬性的操作請求;可用于操作進(jìn)程的操作請求;可用于結(jié)束、掛起線程的操作請求;可用于注入代碼的操作請求;可用于注入動(dòng)態(tài)庫的操作請求;可用于模擬消息的操作請求。進(jìn)一步的,對于Windows操作系統(tǒng),上述全方位的軟件自我防護(hù)方法還需要監(jiān)控以下操作請求可用于篡改注冊表鍵值的操作請求;可用于排隊(duì)APC(異步過程調(diào)用)的操作請求。進(jìn)一步而言,對于要攔截的用于各種操作請求的API集合的選擇是至關(guān)重要的,關(guān)系到安全軟件本身是否能夠防護(hù)各種病毒通過各種途徑的侵襲。本發(fā)明的一個(gè)實(shí)施例中提供的受監(jiān)控API集合包括文件系統(tǒng)的I/O處理函數(shù)IRP_MJ_CREATE、IRP_MJ—WRITE、IRP—MJ—SET—INFORMATION;用于篡改注冊表鍵值的API:Zw/NtRenameKey、Zw/NtRestoreKey、Zw/NtSetValueKey、Zw/NtDeleteKey、Zw/NtDeleteValueKey;用于寫虛擬內(nèi)存、用于讀虛擬內(nèi)存、用于鎖定虛擬內(nèi)存、用于修改虛擬內(nèi)存屬性的API:Zw/NtWriteVirtualMemory、Zw/NtReadVirtualMemory、Zw/NtLockVirtualMemory、Zw/NtProtectVirtualMemory;用于進(jìn)禾呈操作的API:Zw/NtSetlnformationProcess、Zw/NtTerminateProcess、Zw/NtDebugActiveProcess、Zw/NtRequestWaitReplyPort;用于結(jié)束、掛起線程的API:Zw/NtSuspendThread、ZWNtTerminateThread;用于注入代碼的API:Zw/NtWriteVirtualMemory、Zw/NtCreateThread、Zw/NtSetThreadContext、Zw/NtQueueApcThread;用于調(diào)用消息鉤子的API:KeUserModeCal舊ack;用于消息操作的API:SendMessage、Sendlnput。'通過結(jié)合附圖的詳細(xì)說明,本發(fā)明的特征和優(yōu)點(diǎn)將更加清楚,其中圖1示例性示出了通過監(jiān)控可應(yīng)用于受保護(hù)軟件的操作請求對軟件進(jìn)行保護(hù)的流程圖。具體實(shí)施例方式下面結(jié)合圖1說明按照本發(fā)明的全方位軟件自我防護(hù)策略來實(shí)現(xiàn)軟件防護(hù)的一個(gè)具體實(shí)施例。圖1示例性示出了通過監(jiān)控可應(yīng)用于受保護(hù)軟件的操作請求對軟件進(jìn)行保護(hù)的流程圖。在步驟S1中,創(chuàng)建掛鉤到某個(gè)操作請求的鉤子處理例程,用于攔截相關(guān)聯(lián)的操作請求。該操作請求例如可以通過調(diào)用API來實(shí)現(xiàn),從而,相應(yīng)的鉤子處理例程通過掛鉤這個(gè)API進(jìn)行監(jiān)控。對于本發(fā)明中需要監(jiān)控的操作請求的集合,可以針對每個(gè)操作請求創(chuàng)建相關(guān)聯(lián)的鉤子處理例程進(jìn)行監(jiān)控。在步驟S2中,當(dāng)攔截到該操作請求時(shí),例如鉤子處理例程攔截到與之關(guān)聯(lián)的API被調(diào)用時(shí),在處理該操作請求之前,首先跳轉(zhuǎn)到相關(guān)聯(lián)的鉤子處理例程,執(zhí)行鉤子處理例程中的步驟。在步驟S3中,鉤子處理例程判斷所攔截到的該操作請求是否針對受保護(hù)的軟件,如果是,則在步驟S4阻止該操作請求,如果否,則在步驟S5允許該操作請求。圖l所示的過程并不是唯一的,比如,在允許或拒絕該操作請求之前詢問用戶,或者在允許或拒絕該API之后向用戶顯示、進(jìn)行記錄等。本領(lǐng)域技術(shù)人員明了的是,在軟件保護(hù)領(lǐng)域,對于受保護(hù)軟件而言,針對各種惡意程序的保護(hù)策略以及有針對性選擇的受監(jiān)控API集合是決定軟件自我保護(hù)是否有效的關(guān)鍵。下面描述按照本發(fā)明的全方位軟件自我防護(hù)策略來選擇受監(jiān)控API集合從而實(shí)現(xiàn)軟件防護(hù)的一個(gè)具體實(shí)施例。1)關(guān)于文件操作本發(fā)明的保護(hù)策略的一個(gè)方面是針對文件的保護(hù)。修改或刪除安全軟件的文件是很常見的惡意程序破壞手段,現(xiàn)有的軟件自我保護(hù)方法通常是針對這種破壞手段,通過對文件進(jìn)行監(jiān)控來實(shí)現(xiàn)自我保護(hù)。在本發(fā)明的保護(hù)策略中,可以通過攔截文件系統(tǒng)驅(qū)動(dòng)的以下I/O請求包(IRP)處理函數(shù)來防護(hù)惡意程序?qū)τ谑鼙Wo(hù)文件的各種操作a)IRP—MJ—CREATE:創(chuàng)建、打開文件請求b)IRP_MJ—WRITE:寫文件請求c)IRP—MJ—SETJNFORMATION:設(shè)置文件信息請求,比如刪除、移動(dòng)文件等操作會(huì)發(fā)起該請求。通過對上述I/O處理函數(shù)的監(jiān)控,可以有效地防止針對受保護(hù)軟件的文件刪除、修改等操作。2)關(guān)于注冊表操作本發(fā)明的保護(hù)策略的另一個(gè)方面是針對注冊表的保護(hù)。在Windows操作系統(tǒng)中,很多軟件需要依賴注冊表中的某些鍵值,如果這些鍵值被修改或刪除,這些軟件便會(huì)發(fā)生錯(cuò)誤。所以有可能通過改寫或刪除這些鍵值來破壞某些安全軟件的功能。另外,操作系統(tǒng)還有很多注冊表鍵值會(huì)影響一個(gè)程序的執(zhí)行,也有可能通過修改這些鍵值來使安全軟件的部分功能失效。因此,應(yīng)該防止惡意程序針對安全軟件的注冊表操作,在本實(shí)施例中,通過攔截用于操作注冊表、從而有可能被用來攻擊注冊表的API來保護(hù)安全軟件。這里針對注冊表的保護(hù)設(shè)計(jì)出包含以下API集合的攔截策略,通過攔截該集合中的API來實(shí)現(xiàn)對注冊表鍵值的全面保護(hù),防止注冊表鍵值被篡改a)Zw/NtRenameKey:重命名一個(gè)鍵b)Zw/NtRestoreKey:恢復(fù)一個(gè)已保存到文件中的鍵c)Zw/NtSetValueKey:設(shè)置鍵值d)Zw/NtDeleteKey:刪除鍵e)Zw/NtDeleteValueKey:刪除鍵值結(jié)合圖1所示的監(jiān)控處理過程,通過掛鉤上述用于操作注冊表的API,相關(guān)聯(lián)的鉤子處理例程通過判斷所攔截到的任意上述API是否與受保護(hù)軟件有關(guān),阻止可以對受保護(hù)軟件的注冊表進(jìn)行破壞的操作請求。,這里應(yīng)該注意的是,在現(xiàn)有的操作系統(tǒng)中,只有Windows操作系統(tǒng)具有注冊表。因此,就本領(lǐng)域現(xiàn)狀而言,對于注冊表的保護(hù)只是針對Windows操作系統(tǒng)而言的,對于其他操作系統(tǒng)則不需要考慮這個(gè)方面。然而,未來可能出現(xiàn)的操作系統(tǒng)中如果具備類似于Windows操作系統(tǒng)中的注冊表,則針對這種操作系統(tǒng)的注冊表保護(hù)策略也在本發(fā)明的范圍之內(nèi)。3)關(guān)于內(nèi)存操作本發(fā)明的保護(hù)策略的另一個(gè)方面是針對內(nèi)存的保護(hù)。通過鎖定、修改、讀取內(nèi)存、修改內(nèi)存屬性等操作,有可能直接攻擊安全軟件。鎖定一般用來在內(nèi)核態(tài)安全地讀寫用戶態(tài)內(nèi)存,當(dāng)惡意驅(qū)動(dòng)程序需要讀寫用戶態(tài)內(nèi)存時(shí)會(huì)先鎖定這些內(nèi)存頁。另外,通過修改安全軟件的內(nèi)存數(shù)據(jù)、內(nèi)存塊屬性或代碼等可以影響安全軟件線程的執(zhí)行,比如隱藏一些對象如文件等,使這些安全軟件無法正常工作,或者直接打開安全軟件的進(jìn)程并調(diào)用WriteProcessMemory直接修改,也可以通過注入代碼或動(dòng)態(tài)庫到安全軟件的進(jìn)程來進(jìn)行修改。因此,應(yīng)該防止惡意程序通過內(nèi)存操作來破壞安全軟件,這里通過監(jiān)控用于操作內(nèi)存的API來保護(hù)安全軟件。設(shè)計(jì)出包含以下API集合的攔截策略,通過攔截該集合的API來防止內(nèi)存被修改、被讀取、被鎖定、被修改屬性a)Zw/NtWriteProcessMemory:寫虛擬內(nèi)存b)Zw/NtReadProcessMemory:讀虛擬內(nèi)存c)Zw/NtLockVirtualMemory:鎖定虛擬內(nèi)存d)Zw/NtProtectVirtualMemory:修改虛擬內(nèi)存頁保護(hù)屬性結(jié)合圖1所示的監(jiān)控處理過程,通過掛鉤上述用于操作內(nèi)存的API,相關(guān)聯(lián)的鉤子處理例程通過判斷所攔截到的任意上述API是否與受保護(hù)軟件有關(guān),進(jìn)而阻止針對受保護(hù)軟件的內(nèi)存操作請求。4)關(guān)于進(jìn)程操作本發(fā)明的保護(hù)策略的另一個(gè)方面是針對進(jìn)程的保護(hù)。通過結(jié)束安全軟件的進(jìn)程可以阻止安全軟件發(fā)揮作用,可以通過以下方式來結(jié)束安全軟件的進(jìn)程調(diào)用TerminateProcess、結(jié)束進(jìn)程內(nèi)的所有線程、模擬鼠標(biāo)點(diǎn)擊來點(diǎn)擊窗口的關(guān)閉按鈕。另外,可以通過調(diào)試目標(biāo)進(jìn)程來控制安全軟件的進(jìn)、線程等,并可以通過停止調(diào)試來結(jié)束目標(biāo)進(jìn)程。因此,應(yīng)該防止惡意程序通過進(jìn)程操作對軟件的破壞,這里通過監(jiān)控用于操作進(jìn)程的API來保護(hù)安全軟件。設(shè)計(jì)出包含以下API集合的攔截策略,通過攔截該集合的API來實(shí)現(xiàn)對進(jìn)程的保護(hù),使惡意程序不能夠直接對受保護(hù)軟件的進(jìn)程執(zhí)行任何操作,防止受保護(hù)軟件的進(jìn)程被結(jié)束和被調(diào)試a)Zw/NtSetlnformationProcess:設(shè)置進(jìn)程屬性信息,比如優(yōu)先級、調(diào)試端口、訪問權(quán)限等b)Zw/NtTerminateProcess:結(jié)束進(jìn)程c)Zw/NtDebugActiveProcess:調(diào)試進(jìn)程d)Zw/NtRequestWaitReplyPort:與本地過程調(diào)用相關(guān),調(diào)試時(shí)會(huì)用到該API結(jié)合圖1所示的監(jiān)控處理過程,通過掛鉤上述用于操作進(jìn)程的API,相關(guān)聯(lián)的鉤子處理例程通過判斷所攔截到的任意上述API是否與受保護(hù)軟件有關(guān),進(jìn)而阻止針對受保護(hù)軟件的進(jìn)程操作請求。5)關(guān)于線程操作本發(fā)明的保護(hù)策略的另一個(gè)方面是針對線程的保護(hù)?,F(xiàn)有的安全軟件對進(jìn)程的防護(hù)只做到防止被TerminateThread,所以通過結(jié)束線程而實(shí)現(xiàn)結(jié)束進(jìn)程的方法有可能被用來攻擊這種安全軟件。另外,通過掛起安全軟件的一些線程可以使安全軟件的部分功能失效。因此,應(yīng)該防止惡意程序通過結(jié)束、掛起線程對軟件的破壞,這里通過監(jiān)控用于結(jié)束、掛起線程的API來保護(hù)安全軟件。通過攔截以下API集合來實(shí)現(xiàn)對線程的保護(hù),防止線程被結(jié)束、被掛起a)Zw/NtTerminateThread:結(jié)束線程b)Zw/NtSuspendThread:掛起線程結(jié)合圖1所示的監(jiān)控處理過程,通過掛鉤上述用于操作線程的API,相關(guān)聯(lián)的鉤子處理例程通過判斷所攔截到的任意上述API是否與受保護(hù)軟件有關(guān),阻止針對受保護(hù)軟件的線程操作請求,從而阻止例如結(jié)束、掛起線程這樣的對線程的任意直接操作。6)關(guān)于排隊(duì)APC對于排隊(duì)APC的防護(hù)也是本發(fā)明的保護(hù)策略的一個(gè)方面。APC稱為異步過程調(diào)用,是一種線程相關(guān)的回調(diào)機(jī)制。當(dāng)向一個(gè)線程的APC隊(duì)列排隊(duì)一個(gè)APC后,當(dāng)該線程的一個(gè)Alertable等待滿足時(shí),APC函數(shù)將得以運(yùn)行。排隊(duì)APC機(jī)制很可能被惡意程序利用來對安全軟件進(jìn)行破壞,例如,當(dāng)一個(gè)Alertable的WaitForSingleObjectEx滿足時(shí),惡意程序創(chuàng)建的APC函數(shù)運(yùn)行。這里通過監(jiān)控用于對一個(gè)線程排隊(duì)APC的以下API來從這個(gè)方面保護(hù)安全軟件Zw/NtQueueApcThread:對一個(gè)線程排隊(duì)APC結(jié)合圖1所示的監(jiān)控處理過程,通過掛鉤上述用于排隊(duì)APC的API,相關(guān)聯(lián)的鉤子處理例程通過判斷所攔截到的上述API是否與受保護(hù)軟件有關(guān),阻止針對受保護(hù)軟件的排隊(duì)APC操作請求。這里應(yīng)該注意的是,與上述注冊表的情況類似,在現(xiàn)有的操作系統(tǒng)中,只有Windows操作系統(tǒng)具有APC機(jī)制。因此,就本領(lǐng)域現(xiàn)狀而言,對于排隊(duì)APC的保護(hù)只是針對Windows操作系統(tǒng)而言的,對于其他操作系統(tǒng)則不需要考慮這個(gè)方面。然而,未來可能出現(xiàn)的操作系統(tǒng)中如果具備類似于Windows操作系統(tǒng)中的APC機(jī)制,則針對這種操作系統(tǒng)關(guān)于排隊(duì)APC方面的保護(hù)策略也在本發(fā)明的范圍之內(nèi)。7)關(guān)于注入代碼本發(fā)明的保護(hù)策略的另一個(gè)方面是對于注入代碼的防護(hù)。注入代碼通常需要兩個(gè)步驟把代碼寫入目標(biāo)進(jìn)程,例如可以通過WriteProcessMemory或在內(nèi)核態(tài)通過KeAttachProcess附力Q至U目標(biāo)進(jìn)程后直接寫內(nèi)存;激活遠(yuǎn)程代碼,例如可以通過CreateRemoteThread、或通過APC、或通過設(shè)置context的IP(指令指針)來進(jìn)行激活。這里通過監(jiān)控用于注入代碼的API來保護(hù)安全軟件,通過攔截以下API集合來防止針對受保護(hù)軟件的代碼注入a)Zw/NtWriteVirtualMemory:寫虛擬內(nèi)存b)Zw/NtCreateThread:創(chuàng)建本地、遠(yuǎn)程進(jìn)程c)Zw/NtSetThreadContext:設(shè)置線程環(huán)境,例如寄存器環(huán)境d)Zw/NtQueueApcThread:對一個(gè)線程排隊(duì)APC其中,通過攔截Zw/NtWriteVirtualMemory來防止把代碼直接寫入內(nèi)存,從而防止把代碼寫入目標(biāo)進(jìn)程;并通過攔截Zw/NtCreateThread、Zw/NtSetThreadContext、Zw/NtQueueApcThread來分別防止激活遠(yuǎn)程代碼的上述三種可能方式。結(jié)合圖1所示的監(jiān)控處理過程,通過掛鉤上述可用于注入代碼的API,相關(guān)聯(lián)的鉤子處理例程通過判斷所攔截到的任意上述API是否與受保護(hù)軟件有關(guān),阻止針對受保護(hù)軟件的操作請求。8)關(guān)于注入動(dòng)態(tài)庫本發(fā)明的保護(hù)策略的另一個(gè)方面是對于注入動(dòng)態(tài)庫的防護(hù)。注入動(dòng)態(tài)庫可以通過兩種方式實(shí)現(xiàn)向目標(biāo)進(jìn)程寫入加載動(dòng)態(tài)庫的代碼并激活,這與注入代碼的手段本質(zhì)上相同;通過消息鉤子注入動(dòng)態(tài)庫。針對通過消息鉤子注入動(dòng)態(tài)庫對軟件的破壞手段,通過攔截KeUserModeCallBack來監(jiān)控消息鉤子調(diào)用,從而阻止注入動(dòng)態(tài)庫。結(jié)合圖1所示的監(jiān)控處理過,呈,通過掛鉤上述在調(diào)用消息鉤子時(shí)會(huì)被調(diào)用的API,相關(guān)聯(lián)的鉤子處理例程通過判斷所攔截到的上述API是否與受保護(hù)軟件有關(guān),進(jìn)而阻止針對受保護(hù)軟件的注入動(dòng)態(tài)庫操作請求。9)關(guān)于消息操作本發(fā)明的保護(hù)策略的另一個(gè)方面是對于消息模擬操作的防護(hù)。通過前面的分析可以知道,可以通過模擬鼠標(biāo)點(diǎn)擊消息來模擬點(diǎn)擊窗口的關(guān)閉按鈕,來結(jié)束安全軟件的迸程。然而,模擬消息還可以實(shí)現(xiàn)很多惡意行為,如模擬消息來關(guān)閉安全軟件的提示窗口,使用戶無法發(fā)現(xiàn)惡意程序的攻擊等。因此應(yīng)該防止惡意程序通過消息模擬操作對軟件的破壞,這里通過監(jiān)控用于消息操作的API來保護(hù)安全軟件。設(shè)計(jì)出包含以下API集合的攔截策略,通過攔截該集合的API來實(shí)現(xiàn)對消息模擬的監(jiān)控,防止通過消息模擬操作來結(jié)束受保護(hù)軟件的進(jìn)程,以及防止通過消息模擬操作對受保護(hù)軟件的其他惡意操作a)SendMessage:模擬發(fā)送消息b)Sendlnput:模擬輸入結(jié)合圖1所示的監(jiān)控處理過程,通過掛鉤上述用于消息操作的API,相關(guān)聯(lián)的鉤子處理例程通過判斷所攔截到的上述API是否與受保護(hù)軟件有關(guān),阻止針對受保護(hù)軟件的消息操作請求。通過對按照本發(fā)明的軟件保護(hù)策略所選擇的上述API的監(jiān)控,可以全面有效地保護(hù)軟件免遭惡意程序的各種可能方式的攻擊。應(yīng)該注意,上述各組API集合有可能包含相同的API,這只是為了針對不同的保護(hù)方面做出更加清楚的描述,并不影響這些API集合的監(jiān)視在功能上的實(shí)現(xiàn)。上述各組優(yōu)選的API集合,對于對應(yīng)的保護(hù)對象是有機(jī)的整體,能夠全面地提高軟件保護(hù)的效果。但是,根據(jù)本發(fā)明的軟件保護(hù)策略所選擇的上述API集合也不是唯一的,例如,可以用具有相同或相似功能的API進(jìn)行替換,并且,不同版本的操作系統(tǒng)中,執(zhí)行相同功能的API可能具有不同的名稱,因此,不能將本發(fā)明限制在具體實(shí)施例中所給出的API集合,本發(fā)明包含符合本發(fā)明原理的所有修改和變形。權(quán)利要求1、一種全方位的軟件自我保護(hù)方法,包括建立多個(gè)鉤子來監(jiān)控多個(gè)可應(yīng)用于受保護(hù)軟件的操作請求;當(dāng)所述多個(gè)鉤子中的至少之一攔截到相關(guān)聯(lián)的操作請求時(shí),判斷所攔截到的操作請求是否與受保護(hù)軟件有關(guān)如果有關(guān),則拒絕所攔截到的操作請求,如果無關(guān),則允許所攔截到的操作請求;其中,所述多個(gè)可應(yīng)用于受保護(hù)軟件的操作請求包括可用于篡改文件的操作請求;可用于修改內(nèi)存、讀取內(nèi)存、鎖定內(nèi)存、修改內(nèi)存屬性的操作請求;可用于操作進(jìn)程的操作請求;可用于結(jié)束線程、掛起線程的操作請求;可用于注入代碼的操作請求;可用于注入動(dòng)態(tài)庫的操作請求;可用于模擬消息的操作請求。2、如權(quán)利要求1所述的全方位的軟件自我保護(hù)方法,其中,所述多個(gè)可應(yīng)用于受保護(hù)軟件的操作請求還包括可用于篡改注冊表鍵值的操作請求;可用于排隊(duì)APC的操作請求。3、如權(quán)利要求2所述的全方位的軟件自我保護(hù)方法,其中,監(jiān)控所述可用于篡改文件的操作請求通過攔截文件系統(tǒng)的I/O處理函數(shù)來執(zhí)行;監(jiān)控所述可用于篡改注冊表鍵值的操作請求通過攔截用于篡改注冊表鍵值的API來執(zhí)行;監(jiān)控所述可用于修改內(nèi)存、讀取內(nèi)存、鎖定內(nèi)存、修改內(nèi)存屬性的操作請求分別通過攔截用于寫虛擬內(nèi)存、用于讀虛擬內(nèi)存、用于鎖定虛擬內(nèi)存、用于修改虛擬內(nèi)存屬性的API來執(zhí)行;監(jiān)控所述可用于操作進(jìn)程的操作請求通過攔截用于進(jìn)程操作的API來執(zhí)行;監(jiān)控所述可用于結(jié)束、掛起線程的操作請求通過攔截用于結(jié)束、掛起線程的API來執(zhí)行;監(jiān)控所述可用于注入代碼的操作請求通過攔截用于注入代碼的API來執(zhí)行;監(jiān)控所述可用于注入動(dòng)態(tài)庫的操作請求通過攔截用于調(diào)用消息鉤子的API來執(zhí)行;監(jiān)控所述可用于排隊(duì)APC的操作請求通過攔截用于對線程排隊(duì)APC的API來執(zhí)行;監(jiān)控所述可用于模擬消息的操作請求通過攔截用于消息操作的API來執(zhí)行。4、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述文件系統(tǒng)的I/O處理函數(shù)包括IRP_MJ_CREATE、IRP一MJ一WRITE、IRPMJ—SETJNFO腿AT畫o5、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述用于篡改注冊表鍵值的API包括Zw/NtRenameKey、Zw/NtRestoreKey、Zw/NtSetValueKey、Zw/NtDeleteKey、Zw/NtDeleteValueKey。6、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述用于寫虛擬內(nèi)存、用于讀虛擬內(nèi)存、用于鎖定虛擬內(nèi)存、用于修改虛擬內(nèi)存屬性的API包括Zw/NtWriteVirtualMemory、Zw/NtReadVirtualMemory、Zw/NtLockVirtualMemory、Zw/NtProtectVirtualMemory。7、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述用于進(jìn)程操作的API包括Zw/NtSetlnformationProcess、Zw/NtTerminateProcess、Zw/NtDebugActiveProcess、Zw/NtRequestWaitReplyPort。8、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述用于結(jié)束、掛起線程的API包括Zw/NtTerminateThread、Zw/NtSuspendThread。9、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述用于注入代碼的API包括Zw/NtWriteVirtualMemoiy、Zw/NtCreateThread、Zw/NtSetThreadContext、Zw/NtQueueApcThread。10、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述用于調(diào)用消息鉤子的API包括KeUserModeCallBack。11、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述用于消息操作的API包括SendMessage、Sendlnput。12、如權(quán)利要求3所述的全方位的軟件自我保護(hù)方法,其中,所述文件系統(tǒng)的I/O處理函數(shù)包括IRP一MJ—CREATE、IRP一MJ—WRITE、IRP一MJ一SET一INFORMATION;所述用于篡改注冊表鍵值的API包括Zw/NtRenameKey、Zw/NtRestoreKey、Zw/NtSetValueKey、Zw/NtDeleteKey、Zw/NtDeleteValueKey;所述用于寫虛擬內(nèi)存、用于讀虛擬內(nèi)存、用于鎖定虛擬內(nèi)存、用于修改虛擬內(nèi)存屬性的API包括Zw/NtWriteVirtualMemory、Zw/NtReadVirtualMemory、Zw/NtLockVirtualMemory、Zw/NtProtectVirtualMemory;所述用于進(jìn)程操作的API包括Zw/NtSetlnformationProcess、Zw/NtTerminateProcess、Zw/NtDebugActiveProcess、Zw/NtRequestWaitReplyPort;所述用于結(jié)束、掛起線程操作的API包括Zw/NtSuspendThread、Zw/NtTerminateThread;所述用于注入代碼的API包括Zw/NtWriteVirtualMemory、Zw/NtCreateThread、Zw/NtSetThreadContext、Zw/NtQueueApcThread;所述用于調(diào)用消息鉤子的API包括KeUserModeCal舊ack;所述用于消息操作的API包括SendMessage、Sendlnput。全文摘要一種全方位的軟件自我保護(hù)方法,包括建立多個(gè)鉤子來監(jiān)控多個(gè)可應(yīng)用于受保護(hù)軟件的操作請求;當(dāng)所述多個(gè)鉤子中的至少之一攔截到相關(guān)聯(lián)的操作請求時(shí),判斷所攔截到的操作請求是否與受保護(hù)軟件有關(guān)如果有關(guān),則拒絕所攔截到的操作請求,如果無關(guān),則允許所攔截到的操作請求;其中,所述多個(gè)可應(yīng)用于受保護(hù)軟件的操作請求包括可用于篡改文件的操作請求;可用于篡改注冊表鍵值的操作請求;可用于修改內(nèi)存、讀取內(nèi)存、鎖定內(nèi)存、修改內(nèi)存屬性的操作請求;可用于操作進(jìn)程的操作請求;可用于結(jié)束、掛起線程的操作請求;可用于注入代碼的操作請求;可用于注入動(dòng)態(tài)庫的操作請求;可用于排隊(duì)APC的操作請求;可用于模擬消息的操作請求。文檔編號G06F9/44GK101414341SQ20071016245公開日2009年4月22日申請日期2007年10月15日優(yōu)先權(quán)日2007年10月15日發(fā)明者軍周申請人:北京瑞星國際軟件有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
崇文区| 北碚区| 河津市| 临泽县| 武鸣县| 柏乡县| 科技| 凤庆县| 和平区| 泸溪县| 山阴县| 泰来县| 冷水江市| 岗巴县| 乐平市| 闵行区| 洞头县| 柳州市| 阿拉善左旗| 镇雄县| 遂溪县| 大余县| 黑水县| 邯郸县| 广州市| 福清市| 江北区| 同江市| 高邮市| 密山市| 天气| 宽甸| 财经| 互助| 临潭县| 哈巴河县| 运城市| 嘉善县| 隆德县| 尉犁县| 巴彦淖尔市|