壳 专用加密软件
殼是最早出現(xiàn)的一種專用加密軟件的技術(shù)。主要分為壓縮殼和加密殼。
殼的裝載過(guò)程
<1>獲取殼自己所需要的API地址
<2>解壓或解密原程序的各個(gè)區(qū)塊
<3>進(jìn)行必要的重定位
<4>跳轉(zhuǎn)到程序的原入口點(diǎn)(OEP)
壓縮引擎
<1> aPLib :適合壓縮小文件(低于64k)
http://www.ibsensoftware.com
<2> JCALG1:適合壓縮大文件
http://www.bitsum.com/other
<3> LZMA:7z格式默認(rèn)壓縮算法
https://www.7-zip.org/
常見(jiàn)的壓縮殼
<1>UPX
穩(wěn)定,兼容,開源
官方主頁(yè):http://upx.github.io/
<2>ASPack
Win32可執(zhí)行文件壓縮軟件,可壓縮EXE、DLL、OCX
官方主頁(yè):https://www.aspack.com
<3>PECompact
支持使用插件,提供多種壓縮項(xiàng)目選擇
官方主頁(yè):https://bitsum.com/portfolio/pecompact/
常見(jiàn)的加密殼
<1>ASProtect
非常強(qiáng)大的Win32保護(hù)工具,開創(chuàng)了殼的新時(shí)代。擁有壓縮、加密、反跟蹤代碼、CRC校驗(yàn)和花指令等保護(hù)措施,使用Blowfish、Twofish、TEA等加密算法,以RSA1024為注冊(cè)密鑰生成器,通過(guò)API鉤子與加殼的程序通信。同時(shí)提供SDK,實(shí)現(xiàn)加密程序的內(nèi)外結(jié)合。
ASProtect在共享軟件中相當(dāng)普遍,研究的人也比較多,所以目前,其各類保護(hù)機(jī)制已被研究得很透了。
<2>Armadillo
又稱“穿山甲”,可以為程序加種種限制(次數(shù),時(shí)間,NAG窗口等)。
在加殼時(shí)將需要保護(hù)的代碼里的所有跳轉(zhuǎn)指令換為INT3指令,機(jī)器碼CC。Armadillo是雙進(jìn)程運(yùn)行,若子程序遇到CC異常,父程序會(huì)截獲這個(gè)INT3異常,計(jì)算出跳轉(zhuǎn)指令得目標(biāo)地址并將其反饋給子進(jìn)程,使子進(jìn)程繼續(xù)運(yùn)行。這種保護(hù)稱為“CC保護(hù)”。
<3>EXECryptor
可以為程序添加NAG窗口和其他限制,但兼容性不好。
<4>Themida
使用虛擬機(jī)保護(hù)技術(shù),缺點(diǎn)是加密后程序體積較大。
虛擬機(jī)保護(hù)軟件
原理:將一系列指令解釋成bytecode(字節(jié)碼),放入一個(gè)解釋引擎中執(zhí)行,從而對(duì)軟件保護(hù)。
虛擬機(jī)引擎主要有編譯器、解釋器、虛擬CPU環(huán)境(VPU Context)組成,并搭配一個(gè)或多個(gè)指令系統(tǒng)。虛擬機(jī)在運(yùn)行時(shí),先根據(jù)自定義的指令系統(tǒng)把已知的x86指令解釋成字節(jié)碼并放入PE文件中,然后將原始代碼刪除,改為類似如下的代碼,放入虛擬機(jī)執(zhí)行循環(huán)。
調(diào)試者跟蹤進(jìn)入虛擬機(jī)后很難理解原指令,除非對(duì)虛擬機(jī)引擎進(jìn)行深入分析。
虛擬機(jī)已成為目前最流行得保護(hù)趨勢(shì)。
但經(jīng)過(guò)VM處理后,程序執(zhí)行速率大大降低。使用者一般只需要把較為重要的代碼用VM保護(hù)起來(lái)。如果是一些對(duì)速度要求比較高的代碼,不適合用VM來(lái)保護(hù)。
VMProtect
VMProtect是一款純虛擬機(jī)保護(hù)軟件,是當(dāng)今最強(qiáng)大的虛擬機(jī)保護(hù)軟件之一。
將制定代碼進(jìn)行變形和虛擬化處理后,能很好地隱藏代碼算法,防止算法被逆向。
VMProtect可以精確地保護(hù)指定地址的代碼。每填入一個(gè)保護(hù)的地址,VMProtect就會(huì)根據(jù)代碼執(zhí)行流程判斷最可能是結(jié)束地址的地址。
參考資料:加密與解密(第四版)
總結(jié)
- 上一篇: php htaccess实现缓存,使用.
- 下一篇: 03:数据结构 栈、队列、链表与数组