加殼

加殼

加殼的全稱應該是可執行程式資源壓縮,是保護檔案的常用手段。 加殼過的程式可以直接運行,但是不能查看原始碼.要經過脫殼才可以查看原始碼。

  • 中文名稱
    加殼
  • 常用手段
    保護檔案
  • 全稱
    可執行程式資源壓縮
  • 原程式
    Windows載入器

概述

加殼的另一種常用的方式是在二進位的程式中植入一段代碼,在運行的時候優先取得程式的控製權,做一些額外的工作。大多數病毒就是基于此原理。

加殼的程式經常想盡辦法阻止外部程式或軟體對加殼程式的反匯編分析或者動態分析,以達到它不可告人的目的。這種技術也常用來保護軟體著作權,防止被軟體破解。

詳細信息

概念

加殼:其實是利用特殊的演算法,對EXE、DLL檔案裏的資源進行壓縮、加密。類似WINZIP 的效果,隻不過這個壓縮之後的檔案,可以獨立運行,解壓過程完全隱蔽,都在記憶體中完成。它們附加在原程式上通過Windows載入器載入記憶體後,先于原始程式執行,得到控製權,執行過程中對原始程式進行解密、還原,還原完成後再把控製權交還給原始程式,執行原來的代碼部分。加上外殼後,原始程式代碼在磁碟檔案中一般是以加密後的形式存在的,隻在執行時在記憶體中還原,這樣就可以比較有效地防止破解者對程式檔案的非法修改,同時也可以防止程式被靜態反編譯。

解壓原理

加殼工具在檔案頭裏加了一段指令,告訴CPU,怎麽才能解壓自己。現在的CPU都很快,所以這個解壓過程你看不出什麽東西。軟體一下子就開啟了,隻有你機器配置非常差,才會感覺到不加殼和加殼後的軟體運行速度的差別。當你加殼時,其實就是給可執行的檔案加上個外衣。使用者執行的隻是這個外殼程式。當你執行這個程式的時候這個殼就會把原來的程式在記憶體中解開,解開後,以後的就交給真正的程式。所以,這些的工作隻是在記憶體中運行的,是不可以了解具體是怎麽樣在記憶體中運行的。通常說的對外殼加密,都是指很多網上免費或者非免費的軟體,被一些專門的加殼程式加殼,基本上是對程式的壓縮或者不壓縮。因為有的時候程式會過大,需要壓縮。但是大部分的程式是因為防止反跟蹤,防止程式被人跟蹤調試,防止演算法程式不想被別人靜態分析。加密代碼和資料,保護你的程式資料的完整性。不被修改或者窺視你程式的內幕。

加"殼"雖然增加了CPU負擔,但是減少了硬碟讀寫時間,實際套用時加"殼"以後程式運行速度更快(當然有的加"殼"以後會變慢,那是選擇的加"殼"工具問題)。

一般軟體都加"殼"這樣不但可以保護自己的軟體不被破解、修改還可以增加運行時啓動速度

加"殼"不等于木馬,我們平時的絕大多數軟體都加了自己的專用"殼"。

RAR和ZIP都是壓縮軟體,不是加"殼"工具,他們解壓時是需要進行磁碟讀寫,"殼"的解壓縮是直接在記憶體中進行的。用RAR或者ZIP壓縮一個病毒你試試,解壓縮時防毒軟體肯定會發現。而用加"殼"手段封裝木馬,能發現的防毒軟體就少得多。

木馬加殼的原理很簡單,在黑客營中提供的多數木馬中,很多都是經過處理的,而這些處理就是所謂的加殼。當一個EXE的程式生成好後,很輕松的就可以利用諸如資源工具和反匯編工具對它進行修改,但如果程式員給EXE程式加一個殼的話,那麽至少這個加了殼的EXE程式就不是那麽好修改了,如果想修改就必須先脫殼

分類

加殼工具通常分為壓縮殼和加密殼兩類。

壓縮殼的特點是減小軟體體積大小,加密保護不是重點。

加密殼種類比較多,不同的殼側重點不同,一些殼單純保護程式,另一些殼提供額外的功能,如提供註冊機製、使用次數、時間限製等。

相關詞條

相關搜尋

其它詞條