加殼

加殼

加殼的全稱應該是可執行程式資源壓縮,壓縮後的程式可以直接運行。

加殼的另一種常用的方式是在二進制的程式中植入一段代碼,在運行的時候優先取得程式的控制權,之後再把控制權交還給原始代碼,這樣做的目的是隱藏程式真正的OEP(入口點,防止被破解)。大多數病毒就是基於此原理。

加殼的程式需要阻止外部程式或軟體對加殼程式本身的反彙編分析或者動態分析,以達到保護殼內原始程式以及軟體不被外部程式破壞,保證原始程式正常運行。

這種技術也常用來保護軟體著作權,防止軟體被破解。但對於病毒,加殼可以繞過一些防毒軟體的掃描,從而實現它作為病毒的一些入侵或破壞的一些特性。

基本介紹

  • 中文名:加殼
  • 全稱:可執行程式資源壓縮
  • 屬於:保護軟體的常用手段
  • 可以:直接運行
概念,解壓原理,分類,

概念

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

解壓原理

加殼工具在檔案頭裡加了一段指令,告訴CPU,怎么才能解壓自己。現在的CPU都很快,所以這個解壓過程你看不出什麼東西。軟體一下子就打開了,只有你機器配置非常差,才會感覺到不加殼和加殼後的軟體運行速度的差別。當你加殼時,其實就是給可執行的檔案加上個外衣。用戶執行的只是這個外殼程式。當你執行這個程式的時候這個殼就會把原來的程式在記憶體中解開,解開後,以後的就交給真正的程式。所以,這些的工作只是在記憶體中運行的。通常說的對外殼加密,都是指很多網上免費或者非免費的軟體,被一些專門的加殼程式加殼,基本上是對程式的壓縮或者不壓縮。因為有的時候程式會過大,需要壓縮。但是大部分的程式是因為防止反跟蹤,防止程式被人跟蹤調試,防止算法程式不想被別人靜態分析。加密代碼和數據,保護你的程式數據的完整性。不被修改或者窺視你程式的內幕。
加“殼”雖然增加了CPU負擔,但是減少了硬碟讀寫時間,實際套用時加“殼”以後程式運行速度更快(當然有的加“殼”以後會變慢,那是選擇的加“殼”工具問題)。
一般軟體都加“殼”這樣不但可以保護自己的軟體不被破解、修改還可以增加運行時啟動速度
加“殼”不等於木馬,我們平時的絕大多數軟體都加了自己的專用“殼”。
RAR和ZIP都是壓縮軟體,不是加“殼”工具,他們解壓時是需要進行磁碟讀寫,“殼”的解壓縮是直接在記憶體中進行的。用RAR或者ZIP壓縮一個病毒你試試,解壓縮時防毒軟體肯定會發現。而用加“殼”手段封裝木馬,能發現的防毒軟體就少得多。
木馬加殼的原理很簡單,在黑客營中提供的多數木馬中,很多都是經過處理的,而這些處理就是所謂的加殼。當一個程式生成好後,很輕鬆的就可以利用諸如資源工具和反彙編工具對它進行修改,但如果程式設計師給程式加一個殼的話,那么至少這個加了殼的程式就不是那么好修改了,如果想修改就必須先脫殼

分類

加殼工具通常分為壓縮殼和加密殼兩類。
壓縮殼的特點是減小軟體體積大小,加密保護不是重點。
加密殼種類比較多,不同的殼側重點不同,一些殼單純保護程式,另一些殼提供額外的功能,如提供註冊機制、使用次數、時間限制等。

相關詞條

熱門詞條

聯絡我們