硬件和軟件實(shí)施 DEP 技術(shù)的目的并不是防止在計(jì)算機(jī)上安裝有害程序。 而是監(jiān)視已安裝程序,幫助確定它們是否正在安全地使用系統(tǒng)內(nèi)存。 為監(jiān)視程序,硬件實(shí)施 DEP 將跟蹤已指定為“不可執(zhí)行”的內(nèi)存區(qū)域。 如果已將內(nèi)存指定為“不可執(zhí)行”,但是某個(gè)程序試圖通過(guò)內(nèi)存執(zhí)行代碼,Windows 將關(guān)閉該程序以防止惡意代碼。 無(wú)論代碼是不是惡意,都會(huì)執(zhí)行此操作。
硬件和軟件 DEP 的默認(rèn)配置可以保護(hù)核心 Windows 組件和服務(wù)并對(duì)應(yīng)用程序兼容性產(chǎn)生最小的影響,但是我們可以選擇將 DEp 配置為保護(hù)計(jì)算機(jī)上的所有應(yīng)用程序和程序。 如果我們將DEP 配置為保護(hù)計(jì)算機(jī)上的所有應(yīng)用程序和程序,則可以獲得額外的保護(hù),但是也可能會(huì)引起其它應(yīng)用程序兼容性問(wèn)題。 如果我們將 DEP 配置為保護(hù)計(jì)算機(jī)上的所有應(yīng)用程序和程序,并且某些32 位應(yīng)用程序存在兼容性問(wèn)題,則可以從軟件 DEP 保護(hù)中豁免這些應(yīng)用程序。
windows在ntoskrnl中、ntoskrnl.exe初始化時(shí),根據(jù)之前用戶在Ntldr中選擇的啟動(dòng)配置,來(lái)初始化DEP的設(shè)置。對(duì)DEP的設(shè)置,大致有:
(1)對(duì)各個(gè)進(jìn)程的設(shè)置(寫(xiě)到系統(tǒng)的全局共享內(nèi)存區(qū)域)
設(shè)置分為可執(zhí)行的EXECUTE(未保護(hù)的)和不可執(zhí)行的NOEXECUTE(DEP保護(hù)的)。同時(shí)有“例外”和“包含”兩種設(shè)置。2*2=共4種設(shè)置。
(2)CPU中寄存器的設(shè)置。對(duì)于開(kāi)啟了DEP的,需要設(shè)置CPU的相關(guān)標(biāo)志位。
(3)對(duì)用戶態(tài)的程序,在0x10000004非法訪問(wèn)的異常處理中,根據(jù)(1)中的設(shè)置,如果進(jìn)程沒(méi)有開(kāi)啟數(shù)據(jù)執(zhí)行保護(hù),則忽略異常。
(4)對(duì)內(nèi)核態(tài),開(kāi)啟可執(zhí)行保護(hù)后,可能觸發(fā)0x000000FC的錯(cuò)誤。
第(2)步的設(shè)置,應(yīng)該就是Intel 的DEP方案。而(1)應(yīng)該是在Copy-On-Write的時(shí)候會(huì)用到的。(1)(2)的結(jié)果觸發(fā)(3)(4)。
新聞熱點(diǎn)
疑難解答
圖片精選