本發(fā)明涉及終端技術(shù),尤其涉及一種內(nèi)核地址防止惡意修改方法、裝置以及終端。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)發(fā)展,病毒,木馬等惡意程序技術(shù)層出不窮,對用戶的計算機構(gòu)成了極大的危害,個別惡意程序為了自身的存活,利用非常規(guī)手段直接從應(yīng)用層修改內(nèi)核地址,以破壞保護程序的防御功能來達到自身軟件存活,傳播等病毒行為。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例公開了一種內(nèi)核地址防止惡意修改方法、裝置以及終端,能夠解決惡意程序隨意修改內(nèi)核地址的問題。
第一方面,提供了一種內(nèi)核地址防止惡意修改方法,包括:通過鉤子函數(shù)接收系統(tǒng)操作請求,其中,所述請求包括操作碼以及修改地址;根據(jù)所述操作碼判斷操作是否為修改內(nèi)核地址操作;如果判斷結(jié)果是修改內(nèi)核地址操作,則進一步根據(jù)修改地址判斷是否為內(nèi)核保護地址;如果判斷結(jié)果是內(nèi)核保護地址,則拒絕所述請求。
結(jié)合第一方面,第一方面的第一種可能的實施方式中,根據(jù)所述操作碼判斷操作是否為修改內(nèi)核地址操作具體包括:判斷操作碼的值是否為第一值或者第二值,其中,第一值用于表示修改物理內(nèi)存地址,第二值用于表示修改虛擬內(nèi)存地址;如果所述操作碼的值是第一值或者第二值,則確定操作時修改內(nèi)核地址。
結(jié)合第一方面,第一方面的第二種可能的實施方式中,根據(jù)判斷出修改地址是否為內(nèi)核保護地址之前還包括:獲取保護程序的基地址以及所述保護程序的大??;根據(jù)所述保護程序的基地址以及所述保護程序的大小計算得到所述保護程序的內(nèi)核保護地址。
結(jié)合第一方面,第一方面的第三種可能的實施方式中,通過鉤子函數(shù)接收系統(tǒng)操作請求之前還包括:
將系統(tǒng)服務(wù)描述符表中的原函數(shù)的地址用所述鉤子函數(shù)的地址代替,其中,所述原函數(shù)用于修改內(nèi)核地址。
結(jié)合第一方面的第三種可能的實施方式,第一方面的第四種可能的實施方式中,所述原函數(shù)為NtSystemDebugControl函數(shù)。
第二方面,提供了一種內(nèi)核地址防止惡意修改裝置,包括接收模塊、第一判斷模塊、第二判斷模塊以及拒絕模塊,所述接收模塊用于通過鉤子函數(shù)接收系統(tǒng)操作請求,其中,所述請求包括操作碼以及修改地址;所述第一判斷模塊用于根據(jù)所述操作碼判斷操作是否為修改內(nèi)核地址操作;所述第二判斷模塊用于判斷結(jié)果是修改內(nèi)核地址操作時,根據(jù)修改地址判斷是否為內(nèi)核保護地址;所述拒絕模塊用于判斷結(jié)果是內(nèi)核保護地址時,拒絕所述請求。
結(jié)合第二方面,第二方面的第一種可能的實施方式中,所述第一判斷模塊包括判斷單元以及確定單元,所述判斷單元用于判斷操作碼的值是否為第一值或者第二值,其中,第一值用于表示修改物理內(nèi)存地址,第二值用于表示修改虛擬內(nèi)存地址;所述確定單元用于在所述操作碼的值是第一值或者第二值時,確定操作時修改內(nèi)核地址。
結(jié)合第二方面,第二方面的第二種可能的實施方式中,所述裝置還包括獲取模塊以及計算模塊,所述獲取模塊用于獲取保護程序的基地址以及所述保護程序的大??;所述計算模塊用于根據(jù)所述保護程序的基地址以及所述保護程序的大小計算得到所述保護程序的內(nèi)核保護地址。
結(jié)合第二方面,第二方面的第三種可能的實施方式中,所述裝置還包括替代模塊,所述替代模塊用于將系統(tǒng)服務(wù)描述符表中的原函數(shù)的地址用所述鉤子函數(shù)的地址代替,其中,所述原函數(shù)用于修改內(nèi)核地址。
結(jié)合第二方面的第三種可能的實施方式,第二方面的第四種可能的實施方式中,所述原函數(shù)為NtSystemDebugControl函數(shù)。
第三方面,提供了一種終端,其特征在于,包括:處理器、存儲器、通信接口和總線;所述處理器、所述存儲器和所述通信接口通過所述總線連接并完成相互間的通信;所述存儲器存儲可執(zhí)行程序代碼;所述處理器通過讀取所述存儲器中存儲的可執(zhí)行程序代碼來運行與所述可執(zhí)行程序代碼對應(yīng)的程序,以用于執(zhí)行一種內(nèi)核地址防止惡意修改方法;其中,所述方法為第一方面任一項所述的方法。
第四方面,本發(fā)明提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)存儲了計算設(shè)備所執(zhí)行的用于主題推薦的程序代碼。所述程序代碼包括用于執(zhí)行在第一方面中任一項的方法的指令。
上述方案,能夠通過鉤子函數(shù)接收系統(tǒng)操作請求,并判斷操作是否為修改內(nèi)核地址操作,以及修改地址是否為內(nèi)核保護地址,如果兩者都符合,則禁止修改內(nèi)核保護地址,從而避免了惡意程序的危害。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例公開的一種內(nèi)核地址防止惡意修改方法的流程圖;
圖2是本發(fā)明實施例公開的一種內(nèi)核地址防止惡意修改裝置的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實施例公開的另一種內(nèi)核地址防止惡意修改裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實施例公開的一種終端的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
需要說明的是,在本發(fā)明實施例中使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本發(fā)明。在本發(fā)明實施例和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。
為了便于理解,首先對現(xiàn)有技術(shù)中惡意程序是如何修改內(nèi)核保護地址進行描述。
當惡意程序要求修改內(nèi)核保護地址時,惡意程序?qū)tdll模塊的NtSystemDebugControl函數(shù)中的操作碼的值設(shè)置為修改內(nèi)核地址的值,然后,直接通過調(diào)用NtSystemDebugControl函數(shù)對內(nèi)核地址進行修改?,F(xiàn)有的NtSystemDebugControl函數(shù)并不會對操作碼的內(nèi)容以及修改的內(nèi)核地址進行區(qū)分,任何程序都可以調(diào)用NtSystemDebugControl函數(shù)對任何內(nèi)核地址進行修改,即使是惡意程序調(diào)用NtSystemDebugControl函數(shù)對內(nèi)核保護地址進行修改也同樣可以。
參閱圖1,圖1是本發(fā)明實施例公開的一種內(nèi)核地址防止惡意修改方法的流程圖。本實施例的內(nèi)核地址防止惡意修改方法從終端的角度出發(fā)進行描述。本發(fā)明實施例的內(nèi)核地址防止惡意修改方法包括:
110:通過鉤子函數(shù)接收系統(tǒng)操作請求,其中,請求包括操作碼以及修改地址。
120:根據(jù)操作碼判斷操作是否為修改內(nèi)核地址操作。其中,內(nèi)核地址是系統(tǒng)維護的一塊內(nèi)存空間,正常情況下,只有驅(qū)動程序可以訪問,應(yīng)用層的程序是不可以訪問內(nèi)核地址的。
130:根據(jù)修改地址判斷是否為內(nèi)核保護地址。
140:拒絕請求。
在執(zhí)行步驟110之前,可以將系統(tǒng)服務(wù)描述符表中的原函數(shù)(即,NtSystemDebugControl函數(shù))的地址用鉤子函數(shù)(即,NewNtSystemDebugControl函數(shù))的地址代替。使得代替后,當惡意程序意圖調(diào)用原函數(shù)時,實際調(diào)用到的將會是鉤子函數(shù)。其中,NtSystemDebugControl函數(shù)是可直接從應(yīng)用層程序進入到內(nèi)核層,并可修改內(nèi)核地址數(shù)據(jù)的函數(shù)。
惡意程序要求修改內(nèi)核保護地址時,將ntdll模塊的NtSystemDebugControl函數(shù)中的操作碼的值設(shè)置為修改內(nèi)核地址的值,然后,直接通過調(diào)用NtSystemDebugControl函數(shù)對內(nèi)核地址進行修改。但是,由于系統(tǒng)服務(wù)描述符表中的原函數(shù)的地址已經(jīng)被鉤子函數(shù)的地址所代替,所以,惡意程序?qū)嶋H上調(diào)用到的將是鉤子函數(shù)。
鉤子函數(shù)在接收到系統(tǒng)操作請求后,根據(jù)操作碼判斷出操作為修改內(nèi)核地址操作,而且,修改地址是內(nèi)核保護地址。于是,鉤子函數(shù)返回拒絕訪問狀態(tài),以直接拒絕惡意程序修改內(nèi)核保護地址的請求,避免惡意程序危害終端。
在本發(fā)明實施例中,鉤子函數(shù)根據(jù)操作碼判斷出操作為修改內(nèi)核地址操作的方法具體為:鉤子函數(shù)判斷操作碼的值是否為第一值或者第二值,其中,第一值用于表示修改物理內(nèi)存地址,例如,第一值為SysDbgWritePhysical,第二值用于表示修改虛擬內(nèi)存地址,例如,第二值為SysDbgWriteVirtual。如果操作碼的值是第一值或者第二值,則確定操作時修改內(nèi)核地址。
在本發(fā)明實施例中,鉤子函數(shù)判斷修改地址是否為內(nèi)核保護地址的方法具體為:首先,終端獲取保護程序的基地址以及保護程序的大小,并根據(jù)保護程序的基地址以及保護程序的大小計算得到保護程序的內(nèi)核保護地址。例如,保護程序的基地址為0x60000000,保護程序的大小為20000000,則內(nèi)核保護地址為0x60000000~0x80000000。然后,終端將修改地址與內(nèi)核保護地址進行比較,如果修改地址部分或者全部落入內(nèi)核保護地址的范圍,則判斷修改地址為內(nèi)核保護地址。其中,保護程序可以是殺毒軟件等等。
上述詳細闡述了本發(fā)明實施例的方法,下面為了便于更好地實施本發(fā)明實施例的上述方案,相應(yīng)地,下面還提供用于配合實施上述方案的裝置。
參閱圖2,圖2是本發(fā)明實施例公開的一種內(nèi)核地址防止惡意修改裝置的結(jié)構(gòu)示意圖。本發(fā)明實施例的內(nèi)核地址防止惡意修改裝置20包括:接收模塊210、第一判斷模塊220、第二判斷模塊230以及拒絕模塊240。
所述接收模塊210用于通過鉤子函數(shù)接收系統(tǒng)操作請求,其中,所述請求包括操作碼以及修改地址。
所述第一判斷模塊220用于根據(jù)所述操作碼判斷操作是否為修改內(nèi)核地址操作。
所述第二判斷模塊230用于判斷結(jié)果是修改內(nèi)核地址操作時,根據(jù)修改地址判斷是否為內(nèi)核保護地址。
所述拒絕模塊240用于判斷結(jié)果是內(nèi)核保護地址時,拒絕所述請求。
請參見圖3,圖3為本發(fā)明實施例公開的另一種內(nèi)核地址防止惡意修改裝置的結(jié)構(gòu)示意圖。本發(fā)明實施例的內(nèi)核地址防止惡意修改裝置30是根據(jù)圖2所示的內(nèi)核地址防止惡意修改裝置20優(yōu)化得到的。本實施例的內(nèi)核地址防止惡意修改裝置30和圖2所示的內(nèi)核地址防止惡意修改裝置20的不同之處在于,還包括:獲取模塊250、計算模塊260以及替代模塊270。
所述獲取模塊250用于獲取保護程序的基地址以及所述保護程序的大小。
所述計算模塊260用于根據(jù)所述保護程序的基地址以及所述保護程序的大小計算得到所述保護程序的內(nèi)核保護地址。
所述替代模塊270用于將系統(tǒng)服務(wù)描述符表中的原函數(shù)的地址用所述鉤子函數(shù)的地址代替。
進一步地,第一判斷模塊220包括判斷單元221以及確定單元223。其中,
所述判斷單元221用于判斷操作碼的值是否為第一值或者第二值,其中,第一值用于表示修改物理內(nèi)存地址,第二值用于表示修改虛擬內(nèi)存地址;
所述確定單元223用于在所述操作碼的值是第一值或者第二值時,確定操作時修改內(nèi)核地址。
可選地,所述原函數(shù)為NtSystemDebugControl函數(shù)。
本發(fā)明實施例的內(nèi)核地址防止惡意修改裝置20和30能夠?qū)崿F(xiàn)如圖1所示的內(nèi)核地址防止惡意修改方法,具體請參閱圖1以及相關(guān)實施例,此處不再重復贅述。
請參見圖4,圖4為本發(fā)明實施例公開的一種終端的結(jié)構(gòu)示意圖。本實施例的網(wǎng)站包括:至少一個處理器401、通信接口402、用戶接口403和存儲器404,處理器401、通信接口402、用戶接口403和存儲器404可通過總線或者其它方式連接,本發(fā)明實施例以通過總線405連接為例。其中,
處理器401可以是通用處理器,例如中央處理器(Central Processing Unit,CPU)。
通信接口402可以為有線接口(例如以太網(wǎng)接口)或無線接口(例如蜂窩網(wǎng)絡(luò)接口或使用無線局域網(wǎng)接口),用于與其他終端或網(wǎng)站進行通信。本發(fā)明實施例中,通信接口402具體用于將目標推薦對象推薦給終端的用戶。
用戶接口403具體可為觸控面板,包括觸摸屏和觸控屏,用于檢測觸控面板上的操作指令,用戶接口403也可以是物理按鍵或者鼠標。用戶接口403還可以為顯示屏,用于輸出、顯示圖像或數(shù)據(jù)。
存儲器404可以包括易失性存儲器(Volatile Memory),例如隨機存取存儲器(Random Access Memory,RAM);存儲器也可以包括非易失性存儲器(Non-Volatile Memory),例如只讀存儲器(Read-Only Memory,ROM)、快閃存儲器(Flash Memory)、硬盤(Hard Disk Drive,HDD)或固態(tài)硬盤(Solid-State Drive,SSD);存儲器404還可以包括上述種類的存儲器的組合。存儲器404用于存儲一組程序代碼,處理器401用于調(diào)用存儲器404中存儲的程序代碼,執(zhí)行如下操作:
通過鉤子函數(shù)接收系統(tǒng)操作請求,其中,所述請求包括操作碼以及修改地址;
根據(jù)所述操作碼判斷操作是否為修改內(nèi)核地址操作;
如果判斷結(jié)果是修改內(nèi)核地址操作,則進一步根據(jù)修改地址判斷是否為內(nèi)核保護地址;
如果判斷結(jié)果是內(nèi)核保護地址,則拒絕所述請求。
可選地,判斷操作碼的值是否為第一值或者第二值,其中,第一值用于表示修改物理內(nèi)存地址,第二值用于表示修改虛擬內(nèi)存地址;
如果所述操作碼的值是第一值或者第二值,則確定操作時修改內(nèi)核地址。
可選地,獲取保護程序的基地址以及所述保護程序的大??;根據(jù)所述保護程序的基地址以及所述保護程序的大小計算得到所述保護程序的內(nèi)核保護地址。
可選地,將系統(tǒng)服務(wù)描述符表中的原函數(shù)的地址用所述鉤子函數(shù)的地址代替,其中,所述原函數(shù)用于修改內(nèi)核地址。
可選地,所述原函數(shù)為NtSystemDebugControl函數(shù)。
上述方案,能夠通過鉤子函數(shù)接收系統(tǒng)操作請求,并判斷操作是否為修改內(nèi)核地址操作,以及修改地址是否為內(nèi)核保護地址,如果兩者都符合,則禁止修改內(nèi)核保護地址,從而避免了惡意程序的危害。
本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)包括只讀存儲器(Read-Only Memory,ROM)、隨機存儲器(Random Access Memory,RAM)、可編程只讀存儲器(Programmable Read-only Memory,PROM)、可擦除可編程只讀存儲器(Erasable Programmable Read Only Memory,EPROM)、一次可編程只讀存儲器(One-time Programmable Read-Only Memory,OTPROM)、電子抹除式可復寫只讀存儲器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只讀光盤(Compact Disc Read-Only Memory,CD-ROM)或其他光盤存儲器、磁盤存儲器、磁帶存儲器、或者能夠用于攜帶或存儲數(shù)據(jù)的計算機可讀的任何其他介質(zhì)。
以上對本發(fā)明實施例公開的一種終端防盜方法及終端進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。