加壳
全称: 可执行程序资源压缩,对EXE,DLL里的资源进行压缩
特点: 压缩后的程序可以直接运行(实时),这是与传统意义上压缩的区别,例如zip压缩,rar压缩,tar.gz压缩等。
加壳后的程序 : 它们附加在原程序上通过加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。
功能
- 从安全角度讲 防止代码可以进行反汇编,查看源代码对软件进行分析 。
- 从传输角度讲 因为加壳具有压缩功能,可以有利于文件在网络上传输 。
压缩壳生动理解
分类:
- 压缩壳 :减小软件体积大小
- 加密壳 :
- 单纯保护程序
- 提供注册机制
- 使用次数
- 时间限制等。
加壳算法举例
- ASPacK
- UPX
- PECompact
- ASProtect
恶意利用
正是因为加壳的特点:它与压缩不同的点在于一个需要进行读写硬盘,加壳直接进入内存运行,所以就成为运行木马的封装工具,有利于逃避被查杀病毒发现。
UPX加壳
底层原理:参考文章 i春秋帖子: UPX源码分析——加壳篇
思路:就是通过对原来的文件信息,通过压缩替换的思想,在进行压缩后,可以将解压的方法y = f(ξ),放置在最开始的位置,可以能够通过读取最开始位置壳的压缩方法,来进行脱壳(解压)
如下图所示,图片来源于:吾爱破解
- 根据图中,可以理解原来文件的原始信息内容ξ是7 8 9。
- 通过UPX算法f将其进行加壳压缩,变为压缩信息y,其内容2 3 4
-
由于加壳的特点是程序能够自己在内存中实时运行,所以在前面需要添加说明f的实现方法。
所以整个信息内容由原来的ξ+other_info变为了f+y+other_info
UPX加壳示意图
参考资料
- i春秋帖子: UPX源码分析——加壳篇
- 吾爱破解: 小Z以UPX为例,讲解什么是壳,什么是压缩壳?
网友评论