加密技術(shù)解釋及加密效果

深思數(shù)盾
深思數(shù)盾
資源加密是針對PE格式程序的資源進(jìn)行加密的保護(hù)功能,可以防止程序中的資源信息被提取,篡改。在加殼時將PE格式程序中的資源抽取并加密,僅保護(hù)一些外部需要的資源(如圖標(biāo)、版本信息等),在程序執(zhí)行時,在殼代碼中再解密。

導(dǎo)入表保護(hù)

去除原程序的導(dǎo)入表,將導(dǎo)入地址表(IAT)替換為修復(fù)函數(shù),由殼代碼接管導(dǎo)入函數(shù)的跳轉(zhuǎn)。隱藏原程序中的導(dǎo)入表,保護(hù)程序的函數(shù)外部調(diào)用,可以達(dá)到干擾逆向分析、防脫殼的作用。目前僅支持PE格式的程序。

資源加密

資源加密是針對PE格式程序的資源進(jìn)行加密的保護(hù)功能,可以防止程序中的資源信息被提取,篡改。在加殼時將PE格式程序中的資源抽取并加密,僅保護(hù)一些外部需要的資源(如圖標(biāo)、版本信息等),在程序執(zhí)行時,在殼代碼中再解密。

附加數(shù)據(jù)擴(kuò)展

附加數(shù)據(jù)一般是由某些編譯器或打包工具,將一些數(shù)據(jù)(如音視頻、數(shù)據(jù)庫等)與原始的可執(zhí)行程序拼接,這些數(shù)據(jù)一般在運(yùn)行時被原始的程序讀取,附加數(shù)據(jù)在執(zhí)行時并不會直接被映射到內(nèi)存中。由于加殼會改變原始程序文件,如果將附加數(shù)據(jù)直接拼接到保護(hù)后的程序,可能會導(dǎo)致運(yùn)行時異常。附加數(shù)據(jù)擴(kuò)展使用了Hook手段使程序能正常讀取到附加數(shù)據(jù),另外對附加數(shù)據(jù)做了加密處理,防止數(shù)據(jù)被輕易竊取

壓縮

將原始的代碼段與數(shù)據(jù)包打包并壓縮,將原始程序入口(OEP)替換為殼代碼,運(yùn)行時由殼代碼將代碼段與數(shù)據(jù)段還原,并進(jìn)行一些重定位等操作,使程序能正常運(yùn)行。壓縮的核心目不是“壓縮”,并非專為縮小程序體積而設(shè)計的。它真正的作用是將代碼與數(shù)據(jù)段做了加密,并將原先的導(dǎo)入表與重定位信息隱藏了起來,再”順便“將原先的數(shù)據(jù)做了壓縮??梢杂行У胤乐轨o態(tài)反編譯,防止程序被打補(bǔ)丁。

代碼混淆

代碼混淆亦稱花指令,是將計算機(jī)程序的代碼,轉(zhuǎn)換成一種功能上等價,但是難于閱讀和理解的形式。擾亂原始指令,防止靜態(tài)分析。

代碼虛擬化

將原始指令轉(zhuǎn)換為自定義的虛擬機(jī)指令,交由配套虛擬機(jī)系統(tǒng)模擬執(zhí)行。隱藏原始指令,防止代碼邏輯分析。

代碼加密

代碼加密是使用SMC(Self-Modifying Code)技術(shù),將原始的函數(shù)加密,在函數(shù)被執(zhí)行時才將函數(shù)解密并執(zhí)行的保護(hù)方式。防脫殼,防止直接Dump。

反調(diào)試功能

內(nèi)存斷點(diǎn)

可以檢測程序中是否設(shè)置內(nèi)存斷點(diǎn),若檢測到程序中設(shè)置內(nèi)存訪問斷點(diǎn)和內(nèi)存寫入斷點(diǎn)時,則程序直接終止運(yùn)行。

硬件斷點(diǎn)

可以檢測程序中是否設(shè)置硬件斷點(diǎn),若檢測到則程序直接終止運(yùn)行。

內(nèi)存檢查

可以檢測到內(nèi)存是否被修改(比如被調(diào)試器附加修改),若程序內(nèi)存被修改則程序?qū)⒔K止運(yùn)行。

THEEND

最新評論(評論僅代表用戶觀點(diǎn))

更多
暫無評論