為所述合法函數(shù)地址。
[0064]實(shí)施例一
[0065]請參照圖1-4,提供一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)方法,基于應(yīng)用層實(shí)現(xiàn)寫入函數(shù)的調(diào)用。具體可以包括:
[0066]在windows系統(tǒng)進(jìn)程的虛擬內(nèi)存中,通過VirtualAl1c或VirtualAlocEx函數(shù)在虛擬內(nèi)存中申請一片虛擬內(nèi)存空間作為虛擬內(nèi)存磁盤,用來保存虛擬內(nèi)存數(shù)據(jù)。獲取虛擬內(nèi)存磁盤的地址后,使用VirtualProtectEx函數(shù)將這片虛擬內(nèi)存空間的保護(hù)屬性設(shè)置成只讀屬性;即利用虛擬內(nèi)存空間本身的保護(hù)屬性對虛擬內(nèi)存磁盤進(jìn)行保護(hù),當(dāng)虛擬內(nèi)存磁盤的屬性為只讀屬性時(shí),程序任何的寫操作都會引發(fā)訪問違規(guī);這一特征可以防止非法分子對虛擬內(nèi)存磁盤執(zhí)行寫入操作后,產(chǎn)生不可預(yù)料的(如數(shù)組越界等)錯(cuò)誤,從而導(dǎo)致虛擬內(nèi)存數(shù)據(jù)被修改引發(fā)的訪問違規(guī),引發(fā)系統(tǒng)進(jìn)程強(qiáng)制結(jié)束。
[0067]上述操作已經(jīng)能夠禁止非法分子的任何寫入操作,而為了確保具有合法身份的合法寫入操作能夠正常進(jìn)行,本實(shí)施例通過設(shè)置合法函數(shù)的調(diào)用入口(合法函數(shù)地址)來實(shí)現(xiàn),有且只有這個(gè)合法身份才能知曉的入口可以對虛擬內(nèi)存磁盤執(zhí)行如修改保護(hù)屬性的操作。具體的,通過以下方式來實(shí)現(xiàn)合法的寫入操作:
[0068]預(yù)設(shè)合法函數(shù),所述虛擬內(nèi)存磁盤的合法寫入操作調(diào)用所述合法函數(shù),該合法函數(shù)的地址只有合法身份才能獲取;所述合法函數(shù)中包含了修改虛擬內(nèi)存磁盤保護(hù)屬性的操作;
[0069]合法身份通過虛擬內(nèi)存磁盤模塊對虛擬內(nèi)存磁盤執(zhí)行合法的寫入操作;可選的,通過調(diào)用系統(tǒng)API中的Wr iteFi Ie寫入函數(shù)來執(zhí)行;然后虛擬內(nèi)存磁盤模塊對所述WriteFi Ie寫入函數(shù)進(jìn)行攔截,通過攔截技術(shù)修改所述WriteFi Ie寫入函數(shù)的地址為所述合法函數(shù)的地址,優(yōu)選通過HOOK API技術(shù)進(jìn)行攔截。所述攔截技術(shù)在本實(shí)施例中的具體運(yùn)用包括:將所述WriteFi Ie寫入函數(shù)地址替換成預(yù)設(shè)的合法函數(shù)地址,同時(shí)獲取所述WriteFile寫入函數(shù)執(zhí)行寫入操作對應(yīng)需要寫入的數(shù)據(jù),構(gòu)成攔截函數(shù);所述攔截函數(shù)中包含了執(zhí)行修改虛擬內(nèi)存磁盤屬性以及執(zhí)行寫入對應(yīng)數(shù)據(jù)的操作,被攔截后的所述WriteFi Ie寫入函數(shù)如圖4所示;
[0070]當(dāng)程序調(diào)用經(jīng)過上述操作后的WriteFile寫入函數(shù)時(shí),將依據(jù)被修改的地址自動(dòng)跳轉(zhuǎn)到攔截函數(shù),依據(jù)攔截函數(shù)指向的操作首先將虛擬內(nèi)存磁盤的保護(hù)屬性修改為可讀寫屬性,S卩PAGE_EXECUTE_READWRITE;依據(jù)從WriteFile寫入函數(shù)獲取到的所述需要寫入的數(shù)據(jù),對虛擬內(nèi)存磁盤中的虛擬內(nèi)存數(shù)據(jù)進(jìn)行寫入或修改操作;寫入操作執(zhí)行完畢后,所述攔截函數(shù)通過調(diào)用VirtualProtectEx函數(shù)將之前設(shè)置成可讀寫的虛擬內(nèi)存磁盤恢復(fù)成只讀屬性,S卩PAGE_READ0NLY,關(guān)閉寫入操作唯一合法的入口,防止內(nèi)存數(shù)據(jù)被意外修改。
[0071]實(shí)施例二
[0072]請參照圖5和圖6,本實(shí)施例在實(shí)施例一的基礎(chǔ)上,提供一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)系統(tǒng),包括:
[0073]設(shè)置模塊I,用于設(shè)置虛擬內(nèi)存磁盤的屬性為只讀;可選通過VirtualProtectEx函數(shù)設(shè)置;
[0074]預(yù)設(shè)模塊2,用于預(yù)設(shè)合法函數(shù),所述虛擬內(nèi)存磁盤的合法寫入操作調(diào)用所述合法函數(shù);
[0075]調(diào)用模塊3,用于調(diào)用寫入函數(shù);
[0076]攔截模塊4,用于攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址;可選采用HOOK API技術(shù)攔截或者其他攔截技術(shù)實(shí)現(xiàn);所述攔截模塊4具體包括第一修改單元41,用于修改虛擬內(nèi)存磁盤的屬性為可讀寫;操作單元42,用于依據(jù)所述寫入函數(shù),對所述虛擬內(nèi)存磁盤執(zhí)行寫入操作;第二修改單元43,用于修改虛擬內(nèi)存磁盤的屬性為只讀。
[0077]可選的,還包括虛擬內(nèi)存磁盤模塊,所述虛擬內(nèi)存磁盤模塊包括所述調(diào)用模塊3和所述攔截模塊4;
[0078]所述調(diào)用模塊3,具體用于通過虛擬內(nèi)存磁盤模塊合法調(diào)用寫入函數(shù);
[0079]所述攔截模塊4,具體用于虛擬內(nèi)存磁盤攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址,同時(shí)依據(jù)所述寫入函數(shù),獲取寫入操作對應(yīng)的寫入數(shù)據(jù),構(gòu)成攔截函數(shù),所述攔截函數(shù)對應(yīng)包括修改虛擬內(nèi)存磁盤屬性以及寫入對應(yīng)數(shù)據(jù)的操作。
[0080]綜上所述,本發(fā)明提供的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)方法及其系統(tǒng),能夠禁止對虛擬內(nèi)存磁盤的任何非法寫入操作,防止程序因不可預(yù)料的錯(cuò)誤導(dǎo)致虛擬內(nèi)存數(shù)據(jù)被破壞;同時(shí)預(yù)留合法身份的寫入操作入口,確保合法修改虛擬內(nèi)存數(shù)據(jù)的進(jìn)行;進(jìn)一步的,通過HOOK API攔截技術(shù)實(shí)現(xiàn)合法寫入,操作簡單,且安全性高。本發(fā)明基于虛擬內(nèi)存磁盤讀寫屬性的保護(hù)原理,建立內(nèi)存數(shù)據(jù)的防護(hù)墻,從根源上對虛擬內(nèi)存數(shù)據(jù)進(jìn)行保護(hù),禁止任何的非法寫入操作;同時(shí)也不會影響合法地寫入操作,實(shí)現(xiàn)二者的兼顧。
[0081]以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)方法,其特征在于,包括 設(shè)置虛擬內(nèi)存磁盤的屬性為只讀; 預(yù)設(shè)合法函數(shù),所述虛擬內(nèi)存磁盤的合法寫入操作調(diào)用所述合法函數(shù); 調(diào)用寫入函數(shù); 攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址。2.如權(quán)利要求1所述的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)方法,其特征在于,所述“攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址”之后,進(jìn)一步包括: 修改虛擬內(nèi)存磁盤的屬性為可讀寫; 依據(jù)所述寫入函數(shù),對所述虛擬內(nèi)存磁盤執(zhí)行寫入操作; 修改虛擬內(nèi)存磁盤的屬性為只讀。3.如權(quán)利要求1所述的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)方法,其特征在于,所述“調(diào)用寫入函數(shù);攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址”具體為: 通過虛擬內(nèi)存磁盤模塊合法調(diào)用寫入函數(shù); 虛擬內(nèi)存磁盤攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址,同時(shí)依據(jù)所述寫入函數(shù),獲取寫入操作對應(yīng)的寫入數(shù)據(jù),構(gòu)成攔截函數(shù),所述攔截函數(shù)對應(yīng)包括修改虛擬內(nèi)存磁盤屬性以及寫入對應(yīng)數(shù)據(jù)的操作。4.如權(quán)利要求1所述的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)方法,其特征在于,通過VirtualProtectEx函數(shù)設(shè)置所述虛擬內(nèi)存磁盤的屬性。5.如權(quán)利要求1所述的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)方法,其特征在于,通過HOOKAPI技術(shù)攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址。6.一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)系統(tǒng),其特征在于,包括 設(shè)置模塊,用于設(shè)置虛擬內(nèi)存磁盤的屬性為只讀; 預(yù)設(shè)模塊,用于預(yù)設(shè)合法函數(shù),所述虛擬內(nèi)存磁盤的合法寫入操作調(diào)用所述合法函數(shù); 調(diào)用模塊,用于調(diào)用寫入函數(shù); 攔截模塊,用于攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址。7.如權(quán)利要求6所述的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)系統(tǒng),其特征在于,所述攔截模塊包括: 第一修改單元,用于修改虛擬內(nèi)存磁盤的屬性為可讀寫; 操作單元,用于依據(jù)所述寫入函數(shù),對所述虛擬內(nèi)存磁盤執(zhí)行寫入操作; 第二修改單元,用于修改虛擬內(nèi)存磁盤的屬性為只讀。8.如權(quán)利要求6所述的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)系統(tǒng),其特征在于,還包括虛擬內(nèi)存磁盤模塊,所述虛擬內(nèi)存磁盤模塊包括所述調(diào)用模塊和所述攔截模塊; 所述調(diào)用模塊,具體用于通過虛擬內(nèi)存磁盤模塊合法調(diào)用寫入函數(shù); 所述攔截模塊,具體用于虛擬內(nèi)存磁盤攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址,同時(shí)依據(jù)所述寫入函數(shù),獲取寫入操作對應(yīng)的寫入數(shù)據(jù),構(gòu)成攔截函數(shù),所述攔截函數(shù)對應(yīng)包括修改虛擬內(nèi)存磁盤屬性以及寫入對應(yīng)數(shù)據(jù)的操作。9.如權(quán)利要求6所述的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)系統(tǒng),其特征在于,所述設(shè)置模塊,具體用于通過VirtualProtectEx函數(shù)設(shè)置所述虛擬內(nèi)存磁盤的屬性。10.如權(quán)利要求6所述的一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)系統(tǒng),其特征在于,所述攔截模塊,具體用于通過HOOK API技術(shù)攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址。
【專利摘要】本發(fā)明提供一種虛擬內(nèi)存數(shù)據(jù)的保護(hù)方法及其系統(tǒng),方法包括設(shè)置虛擬內(nèi)存磁盤的屬性為只讀;預(yù)設(shè)合法函數(shù),所述虛擬內(nèi)存磁盤的合法寫入操作調(diào)用所述合法函數(shù);調(diào)用寫入函數(shù);攔截所述寫入函數(shù),修改所述寫入函數(shù)的地址為所述合法函數(shù)的地址。本發(fā)明利用操作系統(tǒng)的虛擬內(nèi)存磁盤讀寫屬性的保護(hù)原理,通過修改磁盤的屬性來建立內(nèi)存數(shù)據(jù)的防護(hù)墻,從根源上對虛擬內(nèi)存數(shù)據(jù)進(jìn)行保護(hù),禁止任何的非法寫入操作;同時(shí),通過提供唯一合法訪問入口的方式對虛擬內(nèi)存磁盤的數(shù)據(jù)進(jìn)行合法修改或?qū)懭?,確保合法寫入操作的進(jìn)行,實(shí)現(xiàn)二者的兼顧。
【IPC分類】G06F21/62, G06F21/78
【公開號】CN105653980
【申請?zhí)枴?br>【發(fā)明人】張維超
【申請人】福建聯(lián)迪商用設(shè)備有限公司
【公開日】2016年6月8日
【申請日】2015年12月30日