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

函數(shù)地址獲取及應用其的方法、裝置、設備及存儲介質(zhì)與流程

文檔序號:11406765閱讀:327來源:國知局
函數(shù)地址獲取及應用其的方法、裝置、設備及存儲介質(zhì)與流程

本發(fā)明涉及軟件安全技術領域,特別是涉及一種操作實現(xiàn)函數(shù)地址獲取方法及裝置、一種內(nèi)核配置信息操作方法及裝置,以及對應的一種計算機設備和一種計算機存儲介質(zhì)。



背景技術:

在常見的安全軟件中,內(nèi)核配置信息的操作,如注冊表穿透操作通常由用戶層接口和內(nèi)核層驅動配合來實現(xiàn)。當產(chǎn)品需要操作內(nèi)核配置信息時,調(diào)用用戶層接口,將傳入的參數(shù)信息發(fā)送給內(nèi)核驅動,內(nèi)核驅動根據(jù)這些參數(shù)執(zhí)行具體操作。由于內(nèi)核驅動擁有較高的權限且處于系統(tǒng)底層,這就能盡量保證操作可以正常執(zhí)行,不會被惡意軟件攔截。

系統(tǒng)內(nèi)核在完成用戶層的內(nèi)核配置信息操作請求時,在用戶層的操作請求轉入內(nèi)核中后,內(nèi)核通過調(diào)用一個應答請求的封裝接口(如,zwsetvaluekey,注冊表項值設置的封裝接口,用于應答用戶層regsetvalue的操作請求;其中,regsetvalue為應用層接口,用于向內(nèi)核層發(fā)送設置注冊表項值的操作請求)來應答用戶層的操作請求。該封裝接口繼而調(diào)用參數(shù)有效性驗證及資源準備函數(shù)(如,ntsetvaluekey,用于完成設置注冊表項的值的參數(shù)有效性驗證及資源準備),驗證參數(shù)有效性并準備資源,然后調(diào)用對應的操作實現(xiàn)函數(shù)(如,cmsetvaluekey,內(nèi)核中用于實現(xiàn)設置注冊表值的操作的函數(shù))來完成最終的操作。

常見的內(nèi)核配置信息的操作(如注冊表穿透驅動)都是模仿系統(tǒng)內(nèi)核的實現(xiàn)方法,自己實現(xiàn)一套參數(shù)有效性驗證及資源準備函數(shù)(如ntxxxxx系列的注冊表參數(shù)有效性驗證及資源準備函數(shù))。參數(shù)有效性驗證及資源準備函數(shù)需要調(diào)用對應的操作實現(xiàn)函數(shù)來完成最終的操作,但是操作實現(xiàn)函數(shù)(如,cmxxxxxx系列的注冊表操作實現(xiàn)函數(shù))都是未文檔化的函數(shù),無法直接進行調(diào)用。

傳統(tǒng)的解決未文檔化的操作實現(xiàn)函數(shù)無法調(diào)用問題的內(nèi)核配置信息操作方法包括:在內(nèi)核地址空間中搜索操作實現(xiàn)函數(shù)。具體地,先通過逆向內(nèi)核文件得到操作實現(xiàn)函數(shù)的指令序列(或者調(diào)用該操作實現(xiàn)函數(shù)的指令序列),然后在內(nèi)核地址空間中搜索該指令序列。需要說明的是該指令序列由硬編碼表示,由于不同的系統(tǒng)版本采用不同的硬編碼,因此其兼容性差。



技術實現(xiàn)要素:

基于此,有必要針對兼容性差的問題,提供一種提高兼容性的操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作方法及裝置、計算機設備、計算機存儲介質(zhì)。

一種操作實現(xiàn)函數(shù)地址獲取方法,包括:

獲取內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址;

根據(jù)所述起始地址在所述棧內(nèi)存中搜索與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元;

獲取所述預設參數(shù)與返回地址的相對偏移,并根據(jù)所述相對偏移及所述內(nèi)存單元的地址確定所述返回地址的存儲位置;

根據(jù)所述存儲位置確定所述返回地址,并根據(jù)所述返回地址對應的指令的前一條指令,確定所述內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

一種操作實現(xiàn)函數(shù)地址獲取方法,包括:

獲取內(nèi)核加載的內(nèi)存的地址范圍;

獲取所述地址范圍內(nèi)的調(diào)用指令;

將所述調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)所述候選函數(shù)的地址獲取所述候選函數(shù);

將所述候選函數(shù)與所述內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的所述候選函數(shù)的地址確定為所述操作實現(xiàn)函數(shù)的地址。

一種內(nèi)核配置信息操作方法,包括:

獲取根據(jù)權利要求上述的操作實現(xiàn)函數(shù)地址獲取方法,獲得的內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址;

接收操作請求;

根據(jù)所述操作實現(xiàn)函數(shù)的地址,調(diào)用所述操作請求對應的操作實現(xiàn)函數(shù)。

一種操作實現(xiàn)函數(shù)地址獲取裝置,包括:

起始地址獲取模塊,用于獲取內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址;

內(nèi)存單元搜索模塊,用于根據(jù)所述起始地址在所述棧內(nèi)存中搜索與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元;

存儲位置確定模塊,用于獲取所述預設參數(shù)與返回地址的相對偏移,并根據(jù)所述相對偏移及所述內(nèi)存單元的地址確定所述返回地址的存儲位置;

函數(shù)地址確定模塊,用于根據(jù)所述存儲位置確定所述返回地址,并根據(jù)所述返回地址對應的指令的前一條指令,確定所述內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

一種操作實現(xiàn)函數(shù)地址獲取裝置,包括:

地址范圍獲取模塊,用于獲取內(nèi)核加載的內(nèi)存的地址范圍;

調(diào)用指令獲取模塊,用于獲取所述地址范圍內(nèi)的調(diào)用指令;

候選函數(shù)確定模塊,用于將所述調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)所述候選函數(shù)的地址獲取所述候選函數(shù);

函數(shù)地址確定模塊,用于將所述候選函數(shù)與所述內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的所述候選函數(shù)的地址確定為所述操作實現(xiàn)函數(shù)的地址。

一種內(nèi)核配置信息操作裝置,包括:

操作函數(shù)地址獲取模塊,用于獲取根據(jù)上述的操作實現(xiàn)函數(shù)地址獲取裝置,獲得的內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址;

操作請求接收模塊,用于接收操作請求;

操作實現(xiàn)調(diào)用模塊,用于根據(jù)所述操作實現(xiàn)函數(shù)的地址,調(diào)用所述操作請求對應的操作實現(xiàn)函數(shù)。

一種計算機設備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)以下步驟:

獲取內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址;

根據(jù)所述起始地址在所述棧內(nèi)存中搜索與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元;

獲取所述預設參數(shù)與返回地址的相對偏移,并根據(jù)所述相對偏移及所述內(nèi)存單元的地址確定所述返回地址的存儲位置;

根據(jù)所述存儲位置確定所述返回地址,并根據(jù)所述返回地址對應的指令的前一條指令,確定所述內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

一種計算機設備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)以下步驟:

獲取內(nèi)核加載的內(nèi)存的地址范圍;

獲取所述地址范圍內(nèi)的調(diào)用指令;

將所述調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)所述候選函數(shù)的地址獲取所述候選函數(shù);

將所述候選函數(shù)與所述內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的所述候選函數(shù)的地址確定為所述操作實現(xiàn)函數(shù)的地址。

一種計算機存儲介質(zhì),所述計算機存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時,實現(xiàn)以下步驟:

獲取內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址;

根據(jù)所述起始地址在所述棧內(nèi)存中搜索與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元;

獲取所述預設參數(shù)與返回地址的相對偏移,并根據(jù)所述相對偏移及所述內(nèi)存單元的地址確定所述返回地址的存儲位置;

根據(jù)所述存儲位置確定所述返回地址,并根據(jù)所述返回地址對應的指令的前一條指令,確定所述內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

一種計算機存儲介質(zhì),所述計算機存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時,實現(xiàn)以下步驟:

獲取內(nèi)核加載的內(nèi)存的地址范圍;

獲取所述地址范圍內(nèi)的調(diào)用指令;

將所述調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)所述候選函數(shù)的地址獲取所述候選函數(shù);

將所述候選函數(shù)與所述內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的所述候選函數(shù)的地址確定為所述操作實現(xiàn)函數(shù)的地址。

由于上述方法、裝置、計算機設備及存儲介質(zhì),無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

附圖說明

圖1為一實施方式的操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作內(nèi)核配置信息操作方法及裝置的執(zhí)行終端的內(nèi)部結構示意圖;

圖2為一實施方式的操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作內(nèi)核配置信息操作方法及裝置的系統(tǒng)結構圖;

圖3為一實施方式的內(nèi)核配置信息操作方法的流程圖;

圖4為圖3的內(nèi)核配置信息操作方法一個步驟的具體流程圖;

圖5為圖4的一個步驟的一實施方式的具體流程圖;

圖6為圖4的一個步驟的另一實施方式的具體流程圖;

圖7為一具體實施例的函數(shù)的調(diào)用順序及操作實現(xiàn)函數(shù)地址獲取方法的原理圖;

圖8為另一實施方式的操作實現(xiàn)函數(shù)地址獲取方法的流程圖;

圖9為一實施方式的內(nèi)核配置信息操作方法的流程圖;

圖10為另一實施方式的內(nèi)核配置信息操作方法的流程圖;

圖11為圖10的內(nèi)核配置信息操作方法的一個步驟的具體流程圖;

圖12為一具體實施例的內(nèi)核配置信息操作方法的時序圖;

圖13為一個實施例的內(nèi)核配置信息操作裝置的結構圖;

圖14為圖13的內(nèi)核配置信息操作裝置一個模塊的具體結構圖;

圖15為圖13的內(nèi)核配置信息操作裝置一個模塊的具體結構圖;

圖16為另一實施方式的操作實現(xiàn)函數(shù)地址獲取裝置的結構圖;

圖17為一實施方式的內(nèi)核配置信息操作裝置的結構圖;

圖18為另一實施方式的內(nèi)核配置信息操作裝置的結構圖。

具體實施方式

為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步的詳細說明。應當理解,此處所描述的具體實施方式僅僅用以解釋本發(fā)明,并不限定本發(fā)明的保護范圍。

圖1為一個實施方式中的執(zhí)行終端的內(nèi)部結構示意圖。如圖1所示,該終端包括通過系統(tǒng)總線連接的處理器、存儲介質(zhì)、內(nèi)存儲器、網(wǎng)絡接口、輸出裝置和輸入裝置。其中,終端的存儲介質(zhì)存儲有操作系統(tǒng)以及一種操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作裝置,該操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作裝置用于實現(xiàn)一種操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作方法。該處理器用于提供計算和控制能力,支撐整個終端的運行。終端的內(nèi)存儲器為存儲介質(zhì)中的操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作裝置運行提供環(huán)境,該內(nèi)存儲器中可存儲有計算機可讀指令,該計算機可讀指令被處理器執(zhí)行時,可使得處理器執(zhí)行一種操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作方法。終端的網(wǎng)絡接口用于與服務器進行網(wǎng)絡通信。終端的輸出裝置可以為顯示屏,顯示屏可以是液晶顯示屏或者電子墨水顯示屏等;輸入裝置可以是顯示屏上覆蓋的觸摸層,也可以是終端外殼上設置的按鍵、軌跡球或觸控板,也可以是外接的鍵盤、觸控板或鼠標等。該終端可以是手機、平板電腦或者個人數(shù)字助理或穿戴式設備等。本領域技術人員可以理解,圖1中示出的結構,僅僅是與本發(fā)明方案相關的部分結構的框圖,并不構成對本發(fā)明方案所應用于其上的終端的限定,具體的終端可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。

圖2為當內(nèi)核配置信息為注冊表時的一實施方式中操作實現(xiàn)函數(shù)地址獲取、內(nèi)核配置信息操作方法及裝置的系統(tǒng)結構示意圖。該系統(tǒng)結構包括用戶層及內(nèi)核層。

其中,用戶層包括對內(nèi)核層的操作進行調(diào)用的應用層接口,如,regcreatekey,創(chuàng)建注冊表項;regopenkey,打開注冊表項;regqueryvalue,取得指定項或子項的值;regsetvalue,設置指定項或子項的值;regenumeratekey,枚舉注冊表項;regenumeratevalue,枚舉注冊表項的值;regdeletekey,刪除注冊表項;regdeletevalue,刪除注冊表項的值;regclosekey,釋放注冊項的值。

內(nèi)核層包括穿透驅動,也可以稱為內(nèi)核函數(shù)。如,與上述應用層接口一一對應的內(nèi)核函數(shù),分別為:ntcreatekey、ntopenkey、ntqueryvalue、ntsetvalue、ntenumeratekey、ntenumeratevalue、ntdeletekey、ntdeletevalue、ntclosekey。

請參照圖3,在一實施方式中,提供一種操作實現(xiàn)函數(shù)地址獲取方法,該方法運行在如圖1所示的終端中,該方法包括以下步驟:

s310:獲取內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址。

內(nèi)核配置信息為在內(nèi)核層中進行操作的系統(tǒng)配置信息。內(nèi)核配置信息的形式可以為數(shù)據(jù)庫的形式,如可以為注冊表。每一個注冊表項都是一條內(nèi)核配置信息。內(nèi)核配置信息操作包括對內(nèi)核配置信息可以進行的操作,包括多種操作。棧內(nèi)存為當前運行的線程或進程中存儲相關參數(shù)的內(nèi)存空間??梢酝ㄟ^一個參數(shù)獲取到內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址。如,該參數(shù)可以為esp,即當前線程或進程的棧內(nèi)存指針,指向棧內(nèi)存的起始地址。

s320:根據(jù)起始地址在棧內(nèi)存中搜索與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元。

內(nèi)核函數(shù)為對內(nèi)核配置信息進行操作的函數(shù),或者與對內(nèi)核配置信息操作相關的函數(shù)。內(nèi)核函數(shù)可以包括應答請求的封裝接口、參數(shù)有效性驗證及資源準備函數(shù)及操作實現(xiàn)函數(shù)。

預設參數(shù)為內(nèi)核函數(shù)的參數(shù)中值相對穩(wěn)定或者具有預設規(guī)律的參數(shù),因此可以根據(jù)該參數(shù)的值搜索到相對應的值,進而確定該值的內(nèi)存單元。

如,一內(nèi)核配置信息操作對應的應答請求的封裝接口的第4個參數(shù)及第6個參數(shù),在調(diào)用該內(nèi)核配置信息操作對應的參數(shù)有效性驗證及資源準備函數(shù)時,將該封裝接口的第4個參數(shù)及第6個參數(shù)傳遞至該參數(shù)有效性驗證及資源準備函數(shù)的第4個參數(shù)及第6個參數(shù)。在參數(shù)有效性驗證及資源準備函數(shù)執(zhí)行的過程中,需要調(diào)用該內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù),且該第4個參數(shù)及第6個參數(shù)將傳遞至該操作實現(xiàn)函數(shù)。該第4個參數(shù)可以表示該內(nèi)核配置信息操作對應的內(nèi)核配置信息項的值的類型;該第6個參數(shù)可以表示用于存儲該內(nèi)核操作信息操作對應的內(nèi)核配置信息項的值的內(nèi)存大小。而內(nèi)核配置信息項的值的類型一般為固定的值,如用1表示字符串型;存儲內(nèi)核配置信息項的值的內(nèi)存大小一般也為固定值,如用16,表示16字節(jié)??梢岳斫獾?,預設參數(shù)的數(shù)量至少為1,數(shù)量越多則準確性越高??蛇x地,為綜合性能及準確性,預設參數(shù)的數(shù)量為2。

s330:獲取預設參數(shù)與返回地址的相對偏移,并根據(jù)相對偏移及內(nèi)存單元的地址確定所述返回地址的存儲位置。

由于調(diào)用函數(shù)時會將參數(shù)和返回地址順序壓棧,因此可以根據(jù)預設參數(shù)與返回地址的相對偏移,以及存儲預設參數(shù)的內(nèi)存單元的地址,確定返回地址的存儲位置。如上述的第4個參數(shù)及該第6個參數(shù),即為表示內(nèi)核配置信息項的值的類型的參數(shù)及表示存儲內(nèi)核配置信息項的值的內(nèi)存大小的參數(shù)。可以根據(jù)這兩個參數(shù)與返回地址之間的關系(如它們之間間隔的參數(shù)的個數(shù)),確定預設參數(shù)與返回地址的相對偏移。進而,可以根據(jù)該相對偏移及與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元確定可能是返回地址的存儲位置。

s340:根據(jù)存儲位置確定返回地址,并根據(jù)返回地址對應的指令的前一條指令,確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

可以將該存儲位置認定是返回地址的存儲位置,即將該存儲位置對應的返回地址對應的指令的前一條指令認定為調(diào)用內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的指令。因此,可以根據(jù)該存儲位置確定返回地址,并根據(jù)該返回地址對應的指令的前一條指令,確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

由于上述方法無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

請參閱圖4,在其中一實施方式中,根據(jù)返回地址對應的指令的前一條指令,確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址的步驟,即步驟s340,包括:

s350:當返回地址對應的指令的前一條指令為調(diào)用指令時,根據(jù)調(diào)用指令確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

與上一實施方式相比,本實施方式在確定了返回地址對應的指令的前一條指令為調(diào)用指令時,才確定內(nèi)核配置信息操作對應的操作對應的操作實現(xiàn)函數(shù)的地址。即在確定了返回地址對應的指令的前一條指令為調(diào)用指令時,才將調(diào)用指令所調(diào)用的內(nèi)核函數(shù)的地址確定為內(nèi)核配置信息操作對應的操作對應的操作實現(xiàn)函數(shù)的地址。如此,確定的操作實現(xiàn)函數(shù)的地址的準確性更高。

需要說明的是,當返回地址對應的指令的前一條指令不為調(diào)用指令時,可以返回步驟s320,繼續(xù)搜索與預設參數(shù)相對應的內(nèi)存單元。

請繼續(xù)參閱圖4,在其中一實施方式中,根據(jù)調(diào)用指令確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址的步驟之前,即步驟s350之前,還包括:

s345:驗證返回地址是否處于內(nèi)核加載的內(nèi)存的地址范圍。

在驗證通過時,才繼續(xù)執(zhí)行根據(jù)調(diào)用指令確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址的步驟;否則,返回執(zhí)行步驟s320,繼續(xù)搜索與預設參數(shù)相對應的內(nèi)存單元。如此,可進一步提高確定的操作實現(xiàn)函數(shù)的地址的準確性。

可以理解地,由于步驟s350屬于步驟s340,因此步驟s340可以包括上述步驟s345、s350,且在步驟s350之前,還可以包括步驟s341。

s341:根據(jù)存儲位置確定返回地址。

請參閱圖5,在其中一實施方式中,根據(jù)調(diào)用指令確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址的步驟,即步驟s350,包括:

s351:將調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)候選函數(shù)的地址獲取候選函數(shù)。

s353:將候選函數(shù)與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的候選函數(shù)的地址確定為操作實現(xiàn)函數(shù)的地址。

進行特征匹配的條件相對通過硬編碼形式的指令序列的嚴格搜索對比,較寬松。如可以匹配函數(shù)對應的執(zhí)行指令的前預設字節(jié)內(nèi)應該包括一個立即數(shù),或者包括某條特殊的匯編指令??梢岳斫獾兀€可以對相互對比的函數(shù)采用聚類算法進行聚類,若屬于一類,則特征匹配成功,否則匹配失敗。

如此,將同時滿足與內(nèi)核函數(shù)的預設參數(shù)相對應、返回地址對應的指令的前一條指令為調(diào)用指令、及與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的特征匹配成功的條件。因此,可更進一步提高確定的操作實現(xiàn)函數(shù)的地址的準確性。

可以理解地,為進一步提高確定的操作實現(xiàn)函數(shù)的地址的準確性,還可以在滿足上述條件的同時,還滿足返回地址處于內(nèi)核加載的內(nèi)存的地址范圍的條件。

請參閱圖6,在其中一實施方式中,根據(jù)返回地址對應的指令的前一條指令,確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址的步驟,包括:

s352:獲取返回地址對應的指令的前一條指令所對應的函數(shù)。

s354:將獲取的函數(shù)與操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的函數(shù)的地址確定為操作實現(xiàn)函數(shù)的地址。

進行特征匹配的條件可以與上一實施方式一致,故在此不作贅述。

如此,將同時滿足與內(nèi)核函數(shù)的預設參數(shù)相對應、及與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)特征匹配成功的條件。因此,可在一定程度上更進一步提高確定的操作實現(xiàn)函數(shù)的地址的準確性。

上述的操作實現(xiàn)函數(shù)地址獲取方法,可以通過對內(nèi)核操作對象的文件結構對象的獲取操作對象的地址信息的成員進行掛鉤(hook),在掛鉤后運行上述操作實現(xiàn)函數(shù)地址獲取方法。如對hhive對象的getcellroutine成員進行掛鉤,將其值賦值為掛鉤函數(shù)的地址。然后調(diào)用參數(shù)有效性驗證及資源準備函數(shù),依次執(zhí)行參數(shù)有效性驗證及資源準備函數(shù)、操作實現(xiàn)函數(shù)、掛鉤函數(shù)、上述操作實現(xiàn)函數(shù)地址獲取方法。

以設置注冊表項的值為例,函數(shù)的調(diào)用順序及操作實現(xiàn)函數(shù)地址獲取方法的原理,如圖7所示。在內(nèi)核層接收到應用層的操作請求之后,依次調(diào)用zwsetvaluekey、ntsetvaluekey、cmsetvaluekey、hookedgetcellroutine及matchcmsetvaluekey。其中,hookedgetcellroutine及matchcmsetvaluekey分別為掛鉤函數(shù)及設置注冊表項的值分別對應的操作實現(xiàn)函數(shù)地址獲取方法。該操作實現(xiàn)函數(shù)地址獲取方法,包括步驟:1、獲取棧內(nèi)存的起始地址;2、向上搜索與預設參數(shù)相對應的參數(shù)并確定該參數(shù)的內(nèi)存單元;3、根據(jù)預設參數(shù)與返回地址的相對偏移,定位返回地址的存儲位置;4、獲取返回地址位置(即返回地址的存儲位置);5、根據(jù)返回地址找到返回地址對應的指令的前一條調(diào)用cmsetvaluekey的指令,從而計算cmsetvaluekey的地址。

請參閱圖8,本發(fā)明還提供另一實施方式的操作實現(xiàn)函數(shù)地址獲取方法。該操作實現(xiàn)函數(shù)地址獲取方法,包括:

s810:獲取內(nèi)核加載的內(nèi)存的地址范圍。

s820:獲取地址范圍內(nèi)的調(diào)用指令。

s830:將調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)候選函數(shù)的地址獲取候選函數(shù)。

s840:將候選函數(shù)與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的候選函數(shù)的地址確定為操作實現(xiàn)函數(shù)的地址。

進行特征匹配的條件可以與上一實施方式一致,故在此不作贅述。在本實施方式中,將同時滿足是內(nèi)核加載的內(nèi)存的地址范圍內(nèi)的調(diào)用指令、調(diào)用指令調(diào)用的函數(shù)與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)特征匹配成功的條件,如此,可以確定較為準確的操作函數(shù)的地址。另外,由于上述方法無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

請參閱圖9,本發(fā)明還提供一實施方式的內(nèi)核配置信息操作方法。該內(nèi)核配置信息操作方法,包括:

s910:獲取根據(jù)操作實現(xiàn)函數(shù)地址獲取方法,獲得的內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

操作實現(xiàn)函數(shù)地址獲取方法為上述的操作實現(xiàn)函數(shù)地址獲取方法。由于內(nèi)核配置信息操作包括多種操作,因此其對應的操作實現(xiàn)函數(shù)也包括多種函數(shù),操作實現(xiàn)函數(shù)的地址包括多個地址。

s930:接收操作請求。

接收由用戶接口層發(fā)送的操作請求。當通過用戶層接口來調(diào)用內(nèi)核驅動中對內(nèi)核配置信息進行操作的函數(shù)時,用戶層接口向內(nèi)核驅動發(fā)送操作請求,操作請求中包括參數(shù),通過該操作請求將參數(shù)傳遞給內(nèi)核驅動。內(nèi)核驅動接收該操作請求。

s970:根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。

需要說明的是,一個操作請求對應一個操作實現(xiàn)函數(shù)。在獲得的內(nèi)核配置信息操作對應的多個操作實現(xiàn)函數(shù)的地址中,找到與操作請求對應的操作實現(xiàn)函數(shù)的地址,從而調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。

上述內(nèi)核配置信息操作方法,獲取根據(jù)操作實現(xiàn)函數(shù)地址獲取方法,獲得的內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址;接收操作請求;根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。由于無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

請參閱圖10,在其中一實施方式中,根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)的步驟之前,即步驟s960之前,包括:

s920:獲取操作對象內(nèi)存偏移函數(shù)的函數(shù)地址。

在其中一實施例中,步驟s920在步驟s930之前。操作對象內(nèi)存偏移函數(shù)用于獲取操作對象的內(nèi)存相對偏移。具體地,操作對象內(nèi)存偏移函數(shù)可以為獲取映射的內(nèi)存相對偏移的函數(shù),如hvpgetcellmapped函數(shù);獲取換頁內(nèi)存的相對偏移的函數(shù),如hvpgetcellpaged函數(shù);獲取平坦形式加載操作對象的內(nèi)存相對偏移的函數(shù),如hvpgetcellflat函數(shù)。

s940:根據(jù)操作請求獲取操作請求對應的內(nèi)核操作對象。

根據(jù)操作請求可以確定操作請求對應的內(nèi)核操作對象。具體的,可以根據(jù)操作請求傳遞的參數(shù)來確定對應的內(nèi)核操作對象(如,cm_key_body,注冊表中的內(nèi)核操作對象,可以通過操作請求中的key句柄參數(shù)獲取到)。內(nèi)核操作對象為內(nèi)核配置信息中的項或項的值。如,可以為注冊表項也可以注冊表項的值。

需要說明的是,在根據(jù)操作請求獲取操作請求對應的內(nèi)核操作對象之前,還需要對操作請求的參數(shù)進行有效性檢驗。如此,保證內(nèi)核操作對象確定的準確性,從而,提高內(nèi)核配置信息操作的準確性。

s950:獲取內(nèi)核操作對象的地址信息,并根據(jù)函數(shù)地址校驗地址信息的合法性。

在其中一個具體實施例中,獲取內(nèi)核操作對象的地址信息的方式可以為,通過先獲取到內(nèi)核操作對象的文件結構對象,如hhive對象,再通過該文件結構對象獲取操作對象地址信息的成員,如hhive對象的getcellroutine成員,獲取到可以獲取內(nèi)核操作對象(如cell,注冊表中的最小操作對象,如可以是對注冊表項或注冊表項的值)的地址信息的函數(shù)地址。hhive.getcellroutine成員是一個可以獲取內(nèi)核操作對象的地址信息的函數(shù)地址,通常是hvpgetcellpaged函數(shù)的函數(shù)地址。如果hhive.getcellroutine成員被惡意軟件掛鉤(hook)了,在調(diào)用操作實現(xiàn)函數(shù)時(cmxxxxx系列函數(shù)),就可能無法獲取正確的結果。所以在調(diào)用操作實現(xiàn)函數(shù)之前,需要校驗hhive.getcellroutine成員的合法性,如果校驗不通過,可以將其賦值為hvpgetcellpaged等獲取映射的內(nèi)存相對偏移的函數(shù)地址,然后再調(diào)用操作實現(xiàn)函數(shù)。

通過將內(nèi)核操作對象的地址信息與操作對象內(nèi)存偏移函數(shù)的函數(shù)地址進行對比可以確定,獲取到的內(nèi)核操作對象的地址信息是否合法??梢詢H在地址信息合法時,才執(zhí)行下一步驟。如此,保證地址信息的合法性。

具體地,根據(jù)函數(shù)地址驗證地址信息的合法性的步驟,即步驟s950,包括:

(a)、當?shù)刂沸畔⑴c函數(shù)地址一致時,地址信息合法;

(b)、當?shù)刂沸畔⑴c函數(shù)地址不一致時,地址信息不合法,將地址信息更新為函數(shù)地址。

當?shù)刂沸畔⒑戏〞r,直接執(zhí)行下一步驟;當?shù)刂沸畔⒉缓戏〞r,先將地址信息更新為獲取到的函數(shù)地址,再執(zhí)行下一步驟。如此,保證地址信息最終的合法性。

在其中一實施方式中,獲取操作對象內(nèi)存偏移函數(shù)的函數(shù)地址的方式包括:

通過遍歷內(nèi)核配置信息的文件結構或加載內(nèi)核配置信息的函數(shù)地址映射文件獲取操作對象內(nèi)存偏移函數(shù)的函數(shù)地址。

在其中一個實施例中,可以通過遍歷所有的內(nèi)核配置信息的文件結構,如hhive結構的方式來獲取操作對象內(nèi)存偏移函數(shù)的函數(shù)地址。在另一個實施例中,可以通過加載一個內(nèi)核配置信息的函數(shù)地址映射文件,如.hiv文件,獲取操作對象內(nèi)存偏移函數(shù)的函數(shù)地址。如hvpgetcellmapped函數(shù)的地址、hvpgetcellpaged函數(shù)的地址或者hvpgetcellflat函數(shù)的地址。具體地,通過動態(tài)加載.hiv文件,可以很方便的獲取到操作對象內(nèi)存偏移函數(shù)的函數(shù)地址,且兼容性好。

需要說明的是,在win8.1及以后的版本中,已經(jīng)沒有hvpgetcellmapped函數(shù)。且hvpgetcellflat函數(shù)基本沒有被用到,所以在這些系統(tǒng)中可以通過獲取hvpgetcellpaged函數(shù)的地址的方式獲取操作對象內(nèi)存偏移函數(shù)的函數(shù)地址。

請繼續(xù)參閱圖10,在其中一實施方式中,根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)的步驟之前,即步驟s970之前,包括:

s960:對操作請求對應的操作實現(xiàn)函數(shù)進行內(nèi)聯(lián)鉤子檢驗。

如果惡意軟件對操作實現(xiàn)函數(shù)(如cmxxxxx系列函數(shù))進行了內(nèi)聯(lián)掛鉤(inlinehook),此時,無論是否對hhive.getcellroutine成員進行了合法性校驗,操作實現(xiàn)函數(shù)的執(zhí)行仍可以被惡意軟件繞過。因此,在調(diào)用操作實現(xiàn)函數(shù)之前有必要進行內(nèi)聯(lián)鉤子檢驗。從而,避免操作函數(shù)的執(zhí)行被惡意軟件繞過。

請參閱圖11,在其中一實施例中,對操作請求對應的操作實現(xiàn)函數(shù)進行內(nèi)聯(lián)鉤子檢驗的步驟,即步驟s960,包括:

s961:若操作請求對應的操作實現(xiàn)函數(shù)的前預設個字節(jié)不包括跳轉指令,則檢驗結果為通過。

一般情況下,若操作實現(xiàn)函數(shù)的前預設個字節(jié)包括跳轉指令,則該操作實現(xiàn)函數(shù)的執(zhí)行被內(nèi)聯(lián)掛鉤。因此,可以通過檢驗前預設個字節(jié)是否包括跳轉指令的方式來進行內(nèi)聯(lián)鉤子檢驗。檢驗結果為通過,即表示未被內(nèi)聯(lián)掛鉤。其中,前預設字節(jié)可以為頭5個字節(jié),可以理解地,預設字節(jié)也可以設置為其它數(shù)量的字節(jié)。

進一步地,或在另一實施例中,對操作請求對應的操作實現(xiàn)函數(shù)進行內(nèi)聯(lián)鉤子檢驗的步驟,包括:

s963:若操作請求對應的操作實現(xiàn)函數(shù)的前預設個字節(jié)包括跳轉指令,則檢驗結果為未通過,對操作請求對應的操作實現(xiàn)函數(shù)進行修復。

檢驗結果為未通過,即表示已被內(nèi)聯(lián)掛鉤,此時,需要對被內(nèi)聯(lián)掛鉤的操作實現(xiàn)函數(shù)進行修復,以保證操作實現(xiàn)函數(shù)的正常運行。

在其中一個具體實施例中,以設置注冊表項的值為例,內(nèi)核配置信息操作方法的時序圖,如圖12所示。

內(nèi)核配置信息操作方法可以由應用軟件發(fā)起。應用軟件調(diào)用用戶層接口regsetvalue();用戶層接口接收到該請求之后,向內(nèi)核驅動發(fā)送操作請求;內(nèi)核驅動在接收到該操作請求之前,需要先獲取到內(nèi)核配置信息操作的cmxxxx系列函數(shù)地址,并獲取到操作對象內(nèi)存偏移函數(shù)的地址,如hvpgetcellmapped函數(shù)、hvpgetcellpaged函數(shù)及hvpgetcellflat函數(shù)。內(nèi)核驅動在接收到該操作請求之后,首先進行參數(shù)有效性校驗,并在校驗通過后根據(jù)操作請求獲取對應的操作對象(cm_key_body對象);然后對該操作對象的hhive.getcellroutine成員的合法性進行校驗;繼而對操作實現(xiàn)函數(shù)cmsetvaluekey()函數(shù)進行inlinehook檢查;最后在檢查通過后調(diào)用cmsetvaluekey()函數(shù)實現(xiàn)設置注冊表項的值,并將結果返回值應用層接口。應用層接口再將結果返回給應用軟件。應用軟件可以為對計算機進行管理的應用軟件。

請參閱圖13,本發(fā)明還提供一實施方式的操作實現(xiàn)函數(shù)地址獲取裝置,包括:

起始地址獲取模塊310,用于獲取內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址;

內(nèi)存單元搜索模塊320,用于根據(jù)起始地址在棧內(nèi)存中搜索與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元;

存儲位置確定模塊330,用于獲取預設參數(shù)與返回地址的相對偏移,并根據(jù)相對偏移及內(nèi)存單元的地址確定返回地址的存儲位置;

函數(shù)地址確定模塊340,用于根據(jù)存儲位置確定返回地址,并根據(jù)返回地址對應的指令的前一條指令,確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

由于上述裝置無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

請參閱圖14,在其中一實施方式中,函數(shù)地址確定模塊340,包括:

函數(shù)地址確定單元350,用于當返回地址對應的指令的前一條指令為調(diào)用指令時,根據(jù)調(diào)用指令確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

在其中一實施方式中,函數(shù)地址確定模塊340,還包括:

地址范圍驗證單元345,用于驗證返回地址是否處于內(nèi)核加載的內(nèi)存的地址范圍。

可以理解地,其中一實施方式中,函數(shù)地址確定模塊340,還可以包括:

返回地址確定單元341,用于根據(jù)存儲位置確定返回地址。

在其中一實施方式中,函數(shù)地址確定模塊340,還包括候選函數(shù)確定單元349;

候選函數(shù)確定單元349,用于將調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)候選函數(shù)的地址獲取候選函數(shù);

函數(shù)地址確定單元350,用于將候選函數(shù)與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的候選函數(shù)的地址確定為操作實現(xiàn)函數(shù)的地址。

請參閱圖15,在其中一實施方式中,函數(shù)地址確定模塊340,包括:

前一函數(shù)獲取單元352,用于獲取返回地址對應的指令的前一條指令所對應的函數(shù);

函數(shù)地址確定單元354,用于將獲取的函數(shù)與操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的函數(shù)的地址確定為操作實現(xiàn)函數(shù)的地址。

請參閱圖16,本發(fā)明還提供一實施方式的操作實現(xiàn)函數(shù)地址獲取裝置,包括:

地址范圍獲取模塊610,用于獲取內(nèi)核加載的內(nèi)存的地址范圍;

調(diào)用指令獲取模塊620,用于獲取地址范圍內(nèi)的調(diào)用指令;

候選函數(shù)確定模塊630,用于將調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)候選函數(shù)的地址獲取候選函數(shù);

函數(shù)地址確定模塊640,用于將候選函數(shù)與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的候選函數(shù)的地址確定為操作實現(xiàn)函數(shù)的地址。

由于上述裝置無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

請參閱圖17,本發(fā)明還提供一實施方式的內(nèi)核配置信息操作裝置,包括:

操作函數(shù)地址獲取模塊710,用于獲取根據(jù)上述的操作實現(xiàn)函數(shù)地址獲取裝置,獲得的內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址;

操作請求接收模塊730,用于接收操作請求;

操作實現(xiàn)調(diào)用模塊770,用于根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。

上述內(nèi)核配置信息操作裝置,獲取根據(jù)操作實現(xiàn)函數(shù)地址獲取方法,獲得的內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址;接收操作請求;根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。由于無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

請參閱圖18,在其中一實施方式中,還包括:

偏移函數(shù)地址獲取模塊720,用于獲取操作對象內(nèi)存偏移函數(shù)的函數(shù)地址;

操作對象獲取模塊740,用于根據(jù)操作請求獲取操作請求對應的內(nèi)核操作對象;

合法性確定模塊750,用于獲取內(nèi)核操作對象的地址信息,并根據(jù)函數(shù)地址校驗地址信息的合法性。

在其中一實施方式中,偏移函數(shù)地址獲取模塊720,用于通過遍歷內(nèi)核配置信息的文件結構或加載內(nèi)核配置信息的函數(shù)地址映射文件獲取操作對象內(nèi)存偏移函數(shù)的函數(shù)地址。

在其中一實施方式中,合法性確定模塊750,包括:

合法判斷單元751,用于當?shù)刂沸畔⑴c函數(shù)地址一致時,地址信息合法;

非法判斷單元753,用于當?shù)刂沸畔⑴c函數(shù)地址不一致時,地址信息不合法,將地址信息更新為函數(shù)地址。

在其中一實施方式中,還包括:

內(nèi)聯(lián)鉤子檢驗模塊760,用于對操作請求對應的操作實現(xiàn)函數(shù)進行內(nèi)聯(lián)鉤子檢驗。

進一步地,內(nèi)聯(lián)鉤子檢驗模塊760,包括:

檢驗通過單元761,用于若操作請求對應的操作實現(xiàn)函數(shù)的前預設個字節(jié)不包括跳轉指令,則檢驗結果為通過。

進一步地,聯(lián)鉤子檢驗模塊760,包括:

檢驗未過單元763,用于若操作請求對應的操作實現(xiàn)函數(shù)的前預設個字節(jié)包括跳轉指令,則檢驗結果為未通過,對操作請求對應的操作實現(xiàn)函數(shù)進行修復。

與方法及裝置對應,本發(fā)明還提供一實施方式的計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,處理器執(zhí)行計算機程序時實現(xiàn)以下步驟:

獲取內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址;

根據(jù)起始地址在棧內(nèi)存中搜索與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元;

獲取預設參數(shù)與返回地址的相對偏移,并根據(jù)相對偏移及內(nèi)存單元的地址確定返回地址的存儲位置;

根據(jù)存儲位置確定返回地址,并根據(jù)返回地址對應的指令的前一條指令,確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

由于上述計算機設備,在處理器執(zhí)行計算機程序時實現(xiàn)各個步驟時,無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

進一步地,處理器執(zhí)行計算機程序時還實現(xiàn)以下步驟:

接收操作請求;

根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。

與方法及裝置對應,本發(fā)明還提供另一實施方式的計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,處理器執(zhí)行計算機程序時實現(xiàn)以下步驟:

獲取內(nèi)核加載的內(nèi)存的地址范圍;

獲取地址范圍內(nèi)的調(diào)用指令;

將調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)候選函數(shù)的地址獲取候選函數(shù);

將候選函數(shù)與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的候選函數(shù)的地址確定為操作實現(xiàn)函數(shù)的地址。

由于上述計算機設備,在處理器執(zhí)行計算機程序時實現(xiàn)各個步驟時,無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

進一步地,處理器執(zhí)行計算機程序時還實現(xiàn)以下步驟:

接收操作請求;

根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。

與方法及裝置對應,本發(fā)明還提供一實施方式的計算機存儲介質(zhì),計算機存儲介質(zhì)上存儲有計算機程序,計算機程序被處理器執(zhí)行時,實現(xiàn)以下步驟:

獲取內(nèi)核配置信息操作對應的棧內(nèi)存的起始地址;

根據(jù)起始地址在棧內(nèi)存中搜索與內(nèi)核函數(shù)的預設參數(shù)相對應的內(nèi)存單元;

獲取預設參數(shù)與返回地址的相對偏移,并根據(jù)相對偏移及內(nèi)存單元的地址確定返回地址的存儲位置;

根據(jù)存儲位置確定返回地址,并根據(jù)返回地址對應的指令的前一條指令,確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址。

由于上述計算機存儲介質(zhì),存儲的計算機程序被處理器執(zhí)行時實現(xiàn)的步驟,無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

進一步地,計算機程序被處理器執(zhí)行時,還實現(xiàn)以下步驟:

接收操作請求;

根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。

與方法及裝置對應,本發(fā)明還提供另一實施方式的計算機存儲介質(zhì),計算機存儲介質(zhì)上存儲有計算機程序,計算機程序被處理器執(zhí)行時,實現(xiàn)以下步驟:

獲取內(nèi)核加載的內(nèi)存的地址范圍;

獲取地址范圍內(nèi)的調(diào)用指令;

將調(diào)用指令調(diào)用的函數(shù)的地址確定為候選函數(shù)的地址,根據(jù)候選函數(shù)的地址獲取候選函數(shù);

將候選函數(shù)與內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)進行特征匹配,并將匹配成功的候選函數(shù)的地址確定為操作實現(xiàn)函數(shù)的地址。

由于上述計算機存儲介質(zhì),存儲的計算機程序被處理器執(zhí)行時實現(xiàn)的步驟,無需通過硬編碼形式的指令序列的嚴格搜索對比,便可以確定內(nèi)核配置信息操作對應的操作實現(xiàn)函數(shù)的地址,因此其兼容性有所提高。

進一步地,計算機程序被處理器執(zhí)行時,還實現(xiàn)以下步驟:

接收操作請求;

根據(jù)操作實現(xiàn)函數(shù)的地址,調(diào)用操作請求對應的操作實現(xiàn)函數(shù)。

由于上述裝置、計算機設備及計算機存儲介質(zhì)均與上述方法相互對應,對于裝置、計算機設備、計算機存儲介質(zhì)中與上述方法對應的具體技術特征,為節(jié)約篇幅,在此不作贅述。

本領域普通技術人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,的程序可存儲于一非易失性的計算機可讀取存儲介質(zhì)中,如本發(fā)明實施例中,該程序可存儲于計算機系統(tǒng)的存儲介質(zhì)中,并被該計算機系統(tǒng)中的至少一個處理器執(zhí)行,以實現(xiàn)包括如上述各方法的實施例的流程。其中,的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機存儲記憶體(randomaccessmemory,ram)等。

以上所述實施例的各技術特征可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術特征所有可能的組合都進行描述,然而,只要這些技術特征的組合不存在矛盾,都應當認為是本說明書記載的范圍。

以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
通江县| 文登市| 东丽区| 乐至县| 彭泽县| 夏河县| 云浮市| 开原市| 广宁县| 新昌县| 陇川县| 沾益县| 青铜峡市| 金溪县| 苏尼特左旗| 浦县| 丰县| 文安县| 谢通门县| 临朐县| 宁津县| 新绛县| 旬阳县| 手游| 驻马店市| 龙岩市| 正镶白旗| 荔波县| 卓资县| 丰县| 那曲县| 独山县| 临江市| 佛学| 马尔康县| 土默特右旗| 丹凤县| 徐水县| 千阳县| 汝南县| 陵川县|