程序加壳是怎么回事2008年11月18日 星期二 13:55●为什么要加壳?
编好软件后所译成的.exe可执行文件,有些作者想把其中的一些版权信息保护起来,不想让别人随便改动(如作者的姓名等)。当然,也为了保护软件不被破解,通常都是采用加壳来进行保护。
还有的作者需要把程序搞的小一点,方便使用。这就需要用到一些软件,然后将EXE可执行文件压缩。
在黑客界,给木马等软件加壳以躲避杀毒软件的查杀,实现上述功能的这些软件也称为加壳软件。
●什么是加壳?
所谓加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码的目的。这类似于WinZip的效果,只不过这个压缩之后的文件可以独立运行,解压过程完全隐蔽,都在内存中完成。
解压原理是加壳工具在文件里加了一段指令,告诉CPU怎么才能解压自己。当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。一切操作自动完成,用户不知道也无需知道程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。
●什么是加花?
加壳技术是一种类似知识产权保护的工具,它保护了程序但又掩盖了程序本身,因为改变了程序原来的形态,所以起到了迷惑杀毒软件的效果,时常被病毒利用来隐蔽自己。
而加花就是指在程序代码中添加一些无意义的代码,例如程序中有个数据为“10”,加花则把其改为“10+1-1”,虽然值没有改变,但程序本身已经改变。现在的杀毒软件对病毒程序的查杀是根据病毒程序本身的一段代码为识别特征。故加花和加壳修改了病毒文件,本身的检验码会改变,以此躲过杀毒软件的查杀。
●小提示:
虽然RAR与ZIP之类的软件所带来的效果与加壳很类似,但这些只是压缩软件,并不是加壳工具。它们在解压时需都要进行磁盘读写,而壳的解压缩是直接在内存中进行的。
用RAR或ZIP之类的软件压缩一个病毒后,在解压时杀毒软件肯定会发现。而采用加壳加花手段封装的木马病毒,能发现的杀毒软件却没有几个。
网友推荐:
可以用upx或者aspack等软件进行加壳。
PECompact
PE_Patch.PECompact
Swf2Swc
PE_Patch.UPX
UPX