加殼 加殼的全稱應該是可執行程序資源壓縮,是保護文件的常用手段.
加殼過的程序可以直接運行,但是不能查看源代碼.要經過脫殼才可以查看源代碼.
加殼:其實是利用特殊的算法,對EXE、DLL文件裏的資源進行壓縮、加密。類似WINZIP 的效果,只不過這個壓縮之後的文件,可以獨立運行,解壓過程完全隱蔽,都在內存中完成。它們附加在原程序上通過Windows加載器載入內存後,先於原始程序執行,得到控制權,執行過程中對原始程序進行解密、還原,還原完成後再把控制權交還給原始程序,執行原來的代碼部分。加上外殼後,原始程序代碼在磁盤文件中壹般是以加密後的形式存在的,只在執行時在內存中還原,這樣就可以比較有效地防止破解者對程序文件的非法修改,同時也可以防止程序被靜態反編譯。
解壓原理,是加殼工具在文件頭裏加了壹段指令,告訴CPU,怎麽才能解壓自己。現在的CPU都很快,所以這個解壓過程妳看不出什麽東西。軟件壹下子就打開了,只有妳機器配置非常差,才會感覺到不加殼和加殼後的軟件運行速度的差別。當妳加殼時,其實就是給可執行的文件加上個外衣。用戶執行的只是這個外殼程序。當妳執行這個程序的時候這個殼就會把原來的程序在內存中解開,解開後,以後的就交給真正的程序。所以,這些的工作只是在內存中運行的,是不可以了解具體是怎麽樣在內存中運行的。通常說的對外殼加密,都是指很多網上免費或者非免費的軟件,被壹些專門的加殼程序加殼,基本上是對程序的壓縮或者不壓縮。因為有的時候程序會過大,需要壓縮。但是大部分的程序是因為防止反跟蹤,防止程序被人跟蹤調試,防止算法程序不想被別人靜態分析。加密代碼和數據,保護妳的程序數據的完整性。不被修改或者窺視妳程序的內幕。