外殼保護技術

外殼保護技術,用戶執行的實際上是這個外殼的程式,而這個外殼程式負責把用戶原來的程式在記憶體中解開壓縮,並把控制權交還給解開後的真正的程式,由於一切工作都是在記憶體中運行,用戶根本不知道也不需要知道其運行過程,並且對執行速度沒有什麼影響。如果在外殼程式中加入對軟體鎖或鑰匙盤的驗證部分,它就是我們所說的外殼保護了。

概念

所謂“外殼”就是給可執行的檔案加上一個外殼。用戶執行的實際上是這個外殼的程式,而這個外殼程式負責把用戶原來的程式在記憶體中解開壓縮,並把控制權交還給解開後的真正的程式,由於一切工作都是在記憶體中運行,用戶根本不知道也不需要知道其運行過程,並且對執行速度沒有什麼影響。如果在外殼程式中加入對軟體鎖或鑰匙盤的驗證部分,它就是我們所說的外殼保護了。

殼的發展

在軟體領域,殼的出現是比較早的。在加密與解密發展初期,由於資料的相對匱乏,為使軟體開發者從保護軟體的牢籠中解脫出來,於是就有了專門研究軟體的保護技術,也就新生了一種新的軟體——機密軟體。殼的出現也正是伴隨著加密軟體的出現而出現了。

有了可保護後,軟體代碼變的不再易讀,在分析過程中如果不能將外層殼去掉,也就很難洞察殼內的世界。因而使程式設計師可以從設計複雜的算法中解脫出來,也就從另一角度增強了軟體的抗破解能力,甚至,對軟體加殼比研究一個更好更優秀的加密驗證算法更有效,這也使得殼保護技術能夠蓬勃發展,並隨著技術的發展產生了不同類型的殼。

殼的作用

軟體加殼後,加殼工具在執行檔的基礎上,創建並添加自己的代碼,有的殼甚至在加殼過程中對原可執行代碼進行壓縮或加密。運行加殼後的執行檔時,windows載入器會首先載入附加在可執行程式上的外殼代碼,外殼代碼獲取控制權後,將源程式代碼重新解壓縮或解密到記憶體中,所有工作完成後,外殼代碼再將控制權移交給源程式代碼,此時程式中才會出現原來的代碼,並且代碼僅存在與記憶體中,在磁碟上看到得是加密後的代碼,也就有效防止了暴力破解的發生。

外殼代碼甚至可以檢測系統的調試狀態等,在檢測到非法活動後可以直接停止外殼解密或解壓縮行為,從另一角度這也增加了軟體調試的難度。

殼的分類

在中文中的殼一般包含兩種類型:壓縮殼和加密殼。但在英文中確實兩個不同的概念,與這兩種類型對應的英文名詞為:Packer和Protector。

壓縮殼

對源程式代碼進行壓縮後,重新封裝並生成執行檔的一種殼。壓縮殼的壓縮算法一般採用已經較成熟的引擎,如aPLib、JCALG1等。

對於一些比較流行的壓縮引擎後壓縮殼,防毒軟體會針對這些殼專門開發與之對應的解壓縮引擎,對加殼後的軟體解壓縮後進行防毒,因而通常情況下使用壓縮殼難以達到免殺目的。

不同加殼軟體特性也不同,可以根據穩定性和壓縮比來選擇合適的壓縮軟體。如果穩定性得不到保證,程式可能頻繁崩潰,如果解壓縮速度太慢又會犧牲程式運行速率。

加密殼

加密殼相比壓縮殼的功能要複雜的多,加密殼側重在軟體保護上,壓縮重新體積不是其主要任務,通常加密殼會將程式代碼混淆加密,已達到防破解的目的,一些功能強大的加密殼可以給程式添加一些額外功能,包括限制軟體使用時間,給軟體添加註冊功能等。

相關詞條

相關搜尋

熱門詞條

聯絡我們