程序员

初识UPX加壳

2020-05-19  本文已影响0人  六亲不认的步伐

加壳


全称: 可执行程序资源压缩,对EXE,DLL里的资源进行压缩
特点: 压缩后的程序可以直接运行(实时),这是与传统意义上压缩的区别,例如zip压缩,rar压缩,tar.gz压缩等。
加壳后的程序 : 它们附加在原程序上通过加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。
功能

  1. 压缩壳 :减小软件体积大小
  2. 加密壳 :

加壳算法举例

恶意利用


正是因为加壳的特点:它与压缩不同的点在于一个需要进行读写硬盘,加壳直接进入内存运行,所以就成为运行木马的封装工具,有利于逃避被查杀病毒发现。

UPX加壳


底层原理:参考文章 i春秋帖子: UPX源码分析——加壳篇
思路:就是通过对原来的文件信息,通过压缩替换的思想,在进行压缩后,可以将解压的方法y = f(ξ),放置在最开始的位置,可以能够通过读取最开始位置壳的压缩方法,来进行脱壳(解压)
如下图所示,图片来源于:吾爱破解

UPX加壳前信息示意图
  1. 根据图中,可以理解原来文件的原始信息内容ξ是7 8 9。
  2. 通过UPX算法f将其进行加壳压缩,变为压缩信息y,其内容2 3 4
  3. 由于加壳的特点是程序能够自己在内存中实时运行,所以在前面需要添加说明f的实现方法。
    所以整个信息内容由原来的ξ+other_info变为了f+y+other_info


    UPX加壳示意图

参考资料

  1. i春秋帖子: UPX源码分析——加壳篇
  2. 吾爱破解: 小Z以UPX为例,讲解什么是壳,什么是压缩壳?
上一篇下一篇

猜你喜欢

热点阅读