可實現(xiàn)對該虛擬的鍵值內(nèi)容的查詢。比如可查找預(yù)先存儲的與該鍵值名"abc〃關(guān)聯(lián)的鍵值,S卩〃\〃c: \\users\\lenovo\\appdata\\local\\Iiebao\\lieba0.exe\,并可將該關(guān)聯(lián)的鍵值"\"c: \\users\\lenovo\\appdata\\local\\Iiebao\\lieba0.exe\〃內(nèi)容寫到KeyValueInformat1n字段中,也就是用〃\〃c:\\users\\lenovo\\appdata\\local\\liebao\\lieba0.exe\〃替換Key Value Informat 1n 字段中原來的內(nèi)存數(shù)據(jù)。進一步的,在完成該替換之后,還可將MyRegNtPreQueryValueKey的返回狀態(tài)改為STATUS_CALLBACK_BY_OK的值,用于表明該MyRegNtPreQueryValueKey函數(shù)已經(jīng)完成了鍵值查詢功能,而無需要往下傳到解析磁盤得到鍵值了(現(xiàn)有的鍵值查詢流程則是到解析磁盤查詢鍵值,該解析磁盤中存儲的鍵值可能是惡意程序技術(shù)修改后的鍵值),即虛擬后就不需要執(zhí)行到“CmpQueryValueKey解析硬盤文件注冊表數(shù)據(jù)”,而是直接返回,讓查詢操作者認(rèn)為查詢到真實數(shù)據(jù)了。由此,不管鍵值名"abc"的鍵值被任意惡意程序用何種技術(shù)更改,在查詢使用此鍵值的時候,都能返回正確的需要查詢的鍵值數(shù)據(jù)。該返回的正確鍵值數(shù)據(jù)則使得應(yīng)用程序能夠正常啟動,如確保了默認(rèn)瀏覽器的鎖定正常等。其中,該操作者即為當(dāng)前正在執(zhí)行函數(shù)的進程。
[0082]在本發(fā)明實施例中,可通過預(yù)置不同注冊表鍵名以及與每一個注冊表鍵值名對應(yīng)的鍵值,并將該注冊表鍵值名及其對應(yīng)的鍵值進行關(guān)聯(lián)存儲,使得在接收到鍵值查詢請求時,能夠通過獲取該鍵值查詢請求對應(yīng)的目標(biāo)鍵值名,并進一步根據(jù)該目標(biāo)鍵值名獲取預(yù)置的與該目標(biāo)鍵值名關(guān)聯(lián)的正確鍵值,將該預(yù)置的鍵值作為當(dāng)前需要查詢的注冊表鍵值,以根據(jù)該預(yù)置的鍵值確保應(yīng)用程序的正常啟動。本發(fā)明實施例不再使用現(xiàn)有的通過用APIHOOK的方式來保護注冊表鍵值數(shù)據(jù),從而解決了因惡意修改注冊表鍵值而無法獲得正確的注冊表鍵值的問題,實現(xiàn)了注冊表鍵值的有效保護,避免了給用戶帶來不便及損失。
[0083]請參閱圖3,圖3是本發(fā)明實施例提供的一種注冊表鍵值的獲取裝置的結(jié)構(gòu)示意圖。具體的,如圖3所示,本發(fā)明實施例的所述注冊表鍵值的獲取裝置可以包括接收模塊11以及獲取模塊12。其中,
[0084]所述接收模塊11,用于接收鍵值查詢請求。
[0085]需要說明的是,本發(fā)明實施例的所述注冊表鍵值的獲取裝置可具體設(shè)置于終端設(shè)備(以下簡稱終端),如智能手機(如Android手機、1S手機等)、平板電腦、移動互聯(lián)網(wǎng)設(shè)備(Mobile Internet Devices,簡稱“MID” )、個人電腦等終端中,本發(fā)明實施例不做限定。
[0086]可選的,該鍵值查詢請求可以是在打開安裝于終端的某一應(yīng)用程序時觸發(fā)的,以獲取該應(yīng)用程序的注冊表鍵值。
[0087]所述獲取模塊12,用于獲取所述鍵值查詢請求對應(yīng)的目標(biāo)鍵值名。
[0088]其中,所述目標(biāo)鍵值名為所述鍵值查詢請求需要查詢的注冊表鍵值的名稱。具體的,該目標(biāo)鍵值名可以是通過解析該鍵值查詢請求對應(yīng)的應(yīng)用程序的注冊表信息結(jié)構(gòu)得到的。
[0089]所述獲取模塊12,還用于獲取預(yù)置的與所述目標(biāo)鍵值名對應(yīng)的鍵值,并將與所述目標(biāo)鍵值名對應(yīng)的鍵值作為所述需要查詢的注冊表鍵值。
[0090]具體實施例中,該終端中可預(yù)置有不同注冊表鍵值名以及與該注冊表鍵值名對應(yīng)的鍵值,該預(yù)置的鍵值為該鍵值查詢請求所需要的正確的注冊表鍵值,如根據(jù)終端合法用戶的操作設(shè)置的鍵值,或者系統(tǒng)默認(rèn)設(shè)置的鍵值等等,其區(qū)別于被惡意程序技術(shù)修改后的鍵值。從而在接收模塊11接收到鍵值查詢請求如打開某一應(yīng)用程序觸發(fā)的鍵值查詢請求時,獲取模塊12能夠通過獲取該鍵值查詢請求對應(yīng)的目標(biāo)鍵值名,并根據(jù)該獲取的目標(biāo)鍵值名獲取到正確的鍵值,以確保應(yīng)用程序的正常啟動。
[0091]在本發(fā)明實施例中,可在接收到鍵值查詢請求時,獲取該鍵值查詢請求對應(yīng)的目標(biāo)鍵值名,并進一步根據(jù)該目標(biāo)鍵值名獲取預(yù)置的與該目標(biāo)鍵值名對應(yīng)的正確鍵值,將該預(yù)置的鍵值作為當(dāng)前需要查詢的注冊表鍵值,以根據(jù)該注冊表鍵值確保應(yīng)用程序的正常啟動,從而解決了因惡意修改注冊表鍵值而無法獲得正確的注冊表鍵值的問題,避免了給用戶帶來不便及損失。
[0092]進一步的,請參閱圖4,圖4是本發(fā)明實施例提供的另一種注冊表鍵值的獲取裝置的結(jié)構(gòu)示意圖。具體的,如圖4所示,本發(fā)明實施例的所述裝置包括上述圖3對應(yīng)實施例的注冊表鍵值的獲取裝置中的接收模塊11以及獲取模塊12,此處不再贅述。進一步的,在本發(fā)明實施例中,所述裝置還可包括:
[0093]預(yù)置模塊13,用于預(yù)先獲取不同的注冊表鍵值名,并為每一個注冊表鍵值名配置與該注冊表鍵值名對應(yīng)的鍵值;
[0094]存儲模塊14,用于將每一個注冊表鍵值名以及與該注冊表鍵值名對應(yīng)的鍵值進行關(guān)聯(lián)存儲。
[0095]具體實施例中,可通過預(yù)置模塊13預(yù)先配置得到各應(yīng)用程序?qū)?yīng)的不同注冊表鍵值名以及與該注冊表鍵值名對應(yīng)的鍵值(即虛擬的鍵值內(nèi)容,其為預(yù)置的正確注冊表鍵值),并通過存儲模塊14將注冊表鍵值名以及該注冊表鍵值名對應(yīng)的鍵值進行關(guān)聯(lián)存儲,如保存到全局?jǐn)?shù)據(jù)中,以便于后續(xù)啟動應(yīng)用程序進行鍵值查詢時,能夠及時地獲取得到相應(yīng)注冊表鍵值相關(guān)聯(lián)的鍵值,即預(yù)置的正確注冊表鍵值,比如根據(jù)終端合法用戶的操作設(shè)置的鍵值,或者系統(tǒng)默認(rèn)設(shè)置的鍵值等等,其區(qū)別于被惡意程序技術(shù)修改后的鍵值。
[0096]可選的,在本發(fā)明實施例中,所述存儲模塊14可具體包括(圖中未示出):
[0097]路徑獲取單元141,用于分別獲取不同的注冊表鍵值名對應(yīng)的注冊表路徑;
[0098]關(guān)聯(lián)存儲單元142,用于將每一個注冊表鍵值名、與該注冊表鍵值名對應(yīng)的注冊表路徑以及與該注冊表鍵值名對應(yīng)的鍵值進行關(guān)聯(lián)存儲;
[0099]所述獲取模塊12獲取預(yù)置的與所述目標(biāo)鍵值名對應(yīng)的鍵值,并將與所述目標(biāo)鍵值名對應(yīng)的鍵值作為所述需要查詢的注冊表鍵值的具體方式可以為:
[0100]獲取預(yù)先存儲的與所述目標(biāo)鍵值名和目標(biāo)注冊表路徑關(guān)聯(lián)的鍵值,并將獲取的鍵值作為所述需要查詢的注冊表鍵值。
[0101 ]進一步的,在本發(fā)明實施例中,所述裝置還可包括:
[0102]注冊模塊15,用于在底層函數(shù)中預(yù)先注冊注冊表回調(diào)函數(shù),并將所述注冊表回調(diào)函數(shù)的處理操作類型配置為查詢注冊表鍵值的類型;
[0103]所述獲取模塊12獲取預(yù)置的與所述目標(biāo)鍵值名對應(yīng)的鍵值的具體方式可以為:
[0104]通過調(diào)用所述注冊表回調(diào)函數(shù)獲取所述鍵值查詢請求對應(yīng)的注冊表信息結(jié)構(gòu);
[0105]將所述注冊表信息結(jié)構(gòu)的預(yù)設(shè)字段中的鍵值確定為與所述目標(biāo)鍵值名對應(yīng)的鍵值。
[0106]具體的,注冊模塊15可使用底層函數(shù)CmRegistercallback注冊一個注冊表回調(diào)函數(shù),該CmRegistercallback函數(shù)處于較底層的層面,使得難以被惡意程序穿透,以確保數(shù)據(jù)的安全性。假設(shè)該注冊的回調(diào)函數(shù)的函數(shù)名是RegistryCallback,并且注冊模塊15可將回調(diào)函數(shù)里處理操作類型配置為(RegOperat1nClass = RegNtPreQueryValueKey)查詢注冊表鍵值的類型,處理這個類型的函數(shù)定義為MyRegNtPreQueryValueKey,從而使得系統(tǒng)中所有查詢注冊表鍵值的行為,都會進入MyRegNtPreQueryVaIueKey函數(shù)。由此,可在MyRegNtPreQueryValueKey里實現(xiàn)查詢注冊表鍵值的虛擬。
[0107]進一步的,在接收到鍵值查詢請求如檢測到打開某一應(yīng)用程序觸發(fā)的鍵值查詢請求時,獲取模塊12即可獲取該鍵值查詢請求對應(yīng)的注冊表信息結(jié)構(gòu),具體可通過調(diào)用該注冊表回調(diào)函數(shù)獲取得到鍵值查詢請求對應(yīng)的注冊表信息結(jié)構(gòu),如該My RegNt PreQueryVa I ueKey 函數(shù)中的第二個參數(shù)Argument 2 是REG_QUERY_VALUE_KEY_INFORMAT1N結(jié)構(gòu)類型的,則獲取