殼 專用加密軟件

殼是最早出現的一種專用加密軟件的技術。主要分爲壓縮殼和加密殼。

  1. 殼的裝載過程
    <1>獲取殼自己所需要的API地址
    <2>解壓或解密原程序的各個區塊
    <3>進行必要的重定位
    <4>跳轉到程序的原入口點(OEP)

  2. 壓縮引擎
    <1> aPLib :適合壓縮小文件(低於64k)
    http://www.ibsensoftware.com
    <2> JCALG1:適合壓縮大文件
    http://www.bitsum.com/other
    <3> LZMA:7z格式默認壓縮算法
    https://www.7-zip.org/

  3. 常見的壓縮殼
    <1>UPX
    穩定,兼容,開源
    官方主頁:http://upx.github.io/
    <2>ASPack
    Win32可執行文件壓縮軟件,可壓縮EXE、DLL、OCX
    官方主頁:https://www.aspack.com
    <3>PECompact
    支持使用插件,提供多種壓縮項目選擇
    官方主頁:https://bitsum.com/portfolio/pecompact/

  4. 常見的加密殼
    <1>ASProtect
    非常強大的Win32保護工具,開創了殼的新時代。擁有壓縮、加密、反跟蹤代碼、CRC校驗和花指令等保護措施,使用Blowfish、Twofish、TEA等加密算法,以RSA1024爲註冊密鑰生成器,通過API鉤子與加殼的程序通信。同時提供SDK,實現加密程序的內外結合。
    ASProtect在共享軟件中相當普遍,研究的人也比較多,所以目前,其各類保護機制已被研究得很透了。
    <2>Armadillo
    又稱“穿山甲”,可以爲程序加種種限制(次數,時間,NAG窗口等)。
    在加殼時將需要保護的代碼裏的所有跳轉指令換爲INT3指令,機器碼CC。Armadillo是雙進程運行,若子程序遇到CC異常,父程序會截獲這個INT3異常,計算出跳轉指令得目標地址並將其反饋給子進程,使子進程繼續運行。這種保護稱爲“CC保護”。
    <3>EXECryptor
    可以爲程序添加NAG窗口和其他限制,但兼容性不好。
    <4>Themida
    使用虛擬機保護技術,缺點是加密後程序體積較大。

  5. 虛擬機保護軟件
    原理:將一系列指令解釋成bytecode(字節碼),放入一個解釋引擎中執行,從而對軟件保護。
    虛擬機引擎主要有編譯器、解釋器、虛擬CPU環境(VPU Context)組成,並搭配一個或多個指令系統。虛擬機在運行時,先根據自定義的指令系統把已知的x86指令解釋成字節碼並放入PE文件中,然後將原始代碼刪除,改爲類似如下的代碼,放入虛擬機執行循環。

		push bytecode
		jmp  VstartVM

調試者跟蹤進入虛擬機後很難理解原指令,除非對虛擬機引擎進行深入分析。
虛擬機已成爲目前最流行得保護趨勢。
但經過VM處理後,程序執行速率大大降低。使用者一般只需要把較爲重要的代碼用VM保護起來。如果是一些對速度要求比較高的代碼,不適合用VM來保護。

VMProtect
VMProtect是一款純虛擬機保護軟件,是當今最強大的虛擬機保護軟件之一。
將制定代碼進行變形和虛擬化處理後,能很好地隱藏代碼算法,防止算法被逆向。
VMProtect可以精確地保護指定地址的代碼。每填入一個保護的地址,VMProtect就會根據代碼執行流程判斷最可能是結束地址的地址。

參考資料:加密與解密(第四版)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章