庖丁解牛之UPack工作原理及实例分析(1)

大家都清楚运行时压缩器UPack是软件逆向工程中常见课题;了解运行时压缩,需要掌握基本的PE文件格式,操作系统的基本知识等。

理解本文内容最好有PE文件基础知识,对PE文件加载器有一定了解。本文会穿插介绍PE文件基础知识但重点不在于此。

下图是PE文件结构部分及在磁盘和加载到内存中的对比,其文件的总体结构未发生变化,但是文件在磁盘和内存中的相对偏移发生了变化。

1

1.1 运行时压缩器定义

运行时压缩器是针对可执行文件而言,可执行文件内部含有解压缩代码,文件在运行瞬间于内存中解压缩后执行。

普通压缩与运行时压缩比较

项目 运行时压缩 普通压缩
对象 PE文件(exe,dll,sys) 所有文件
压缩结果 PE文件(exe,dll,sys) 压缩文件(rar,zip)
解压方式 内部自解压程序 专门解压程序
可否执行 本身可执行 本身不可执行
特点 无需专门解压程序可直接执行 对所有文件压缩

可执行文件的压缩器称为“运行时压缩器”,它是PE文件的专用压缩器。

1.2 运行时压缩器用途及种类

PE压缩器使用的目的主要集中于两个方面:

  • 缩减PE文件的大小
  • 隐藏PE文件内部代码与资源

PE压缩器种类:

  • 单纯用于压缩普通PE文件,比如UPX,ASPack等
  • 对源文件(PE文件)进行较大变形、严重破坏PE头、意图不纯的压缩器,例如用于恶意程序(virtus,Trojan,worm等),比如UPack,PESpin等。

初探UPack压缩文件

UPack的制作者对PE头有深刻认识,UPack以对PE头的独特变形技法而闻名。UPack在刚出现时,许多PE实用程序无法正常运行。导致许多恶意代码制作者使用UPack压缩恶意代码发布。

本文以UPack 0.39版本压缩的notepad.exe为例,详细介绍UPack对PE文件的压缩过程,尤其对PE头部及代码重置的关键技术做了详细介绍。

UPack对notepad.exe做运行时压缩,如下图所示

2

由上图可知notepad.exe程序有原来的66560个字节变成了44908个字节,文件大小有了变化,同时由图中输出信息可知文件的输入表,资源信息等也发生了变化。

2.1 压缩文件检测

被UPack压缩后的文件,文件头部和文件内容发生了变化,对导致许多安全软件认为压缩文件有可能包含病毒特征,会直接报毒,下图是利用QQ传输原始notepad文件和压缩notepad文件时,QQ自检会认为被UPack压缩后的文件包含病毒特征。

3

下图是利用IE浏览器下载压缩文件和正常文件,IE插件给出的提示信息。

4

5

下图是利用多扫描引擎对压缩文件进行检测,国内很多安全厂商的病毒引擎都认为被UPack压缩的文件含有病毒特征。

6

2.2 实用工具识别

由于UPack对PE文件头部做了特殊处理,这样就会使一些PE实用程序无法正常运行,PEView使用工具加载压缩notepad文件和原始notepad文件时,对文件识别也表现不同;由于UPack对notepad头部做了变形,导致PEView在对压缩notepad解析时找不到正常的文件结构而加载失败。

7

该图是OD动态调试工具对压缩的notepad加载时出现的错误信息。

8

未完待续,相关内容链接:
庖丁解牛之UPack工作原理及实例分析(2)
庖丁解牛之UPack工作原理及实例分析(3)

如果您需要了解更多内容,可以
加入QQ群:486207500
直接询问:010-68438880-8669

Spread the word. Share this post!

Meet The Author

Leave Comment