一、 概念
加壳:其实是利用特殊的算法,对可执行文件里的资源进行压缩,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。它们附加在原程序上通过加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。 -------百度百科
把程序读入内存进行解密,然后再访问程序。
二、目的
- 隐藏真正的入口(OEP),防止被破解,保护软件和软件版权。
- 阻止外部程序或软件(ollydbg等)对加壳程序本身的反汇编分析或者动态分析,保护软件正常运行。
- 压缩文件大小
- 也可以用来保护病毒,避开杀毒软件的扫描
三、分类
- 压缩加壳(upx等)
UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,对于支持的大多数格式没有运行时间或内存的不利后果。 UPX 支持许多不同的可执行文件格式 包含 Windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库、DOS 程序、 Linux 可执行文件和核心。-百度百科
- 加密加壳