逆向工程核心原理第十四章:运行时压缩

运行时压缩

数据压缩

无损压缩

无损压缩用来缩减文件的大小,压缩后的文件更易保管,移动。使用经过压缩的文件之前,需要先对文件解压缩。
最具有代表性的无损压缩算法有Run-Length,Lempel-Ziv,Huffman等,此外许多压缩算法都是在上面3种算法的基础上改造而成的。

有损压缩

有损压缩允许压缩文件时损失一定信息,以换取高压缩率压缩多媒体文件(jpg,MP3,MP4)时,大部分都使用有损压缩。MP3的核心算法通过删除超越人类听觉范围(20-20000Hz)的波长区段来缩减数据大小

运行时压缩器

运行时压缩器是针对可执行(PE,Portable Executable)文件而言的,可执行文件内部包含有解压缩代码,文件在运行瞬间于内存中解压缩后执行
逆向工程核心原理第十四章:运行时压缩_第1张图片
与普通压缩器相比,运行是压缩器的一个明显不同是“PE文件的可运行性”
把普通PE文件创建成运行是压损文件的实用程序称为“压缩器(packer)”,经过反逆向(anti-reversing)技术特别处理的压缩器称为保护器(protector)

压缩器

PE压损器是指可执行文件的压缩器,准确一点应该称为“运行是压缩器”,它是PE文件的专用压缩器

使用目的

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

使用现状

运行是压缩的概念早在DOS时代就出现了,当时没有广泛使用,现在的实用程序,“打补丁”文件,普通程序等都广泛应用运行时压缩

压缩器种类

PE压损器大致可分为两类:一类是单纯用于压压缩普通PE文件的压缩器;另一类是对源文件进行较大变形,严重破坏PE头,意图稍嫌不纯的压缩器(专门用于恶意程序)

  • 目的纯粹的压缩器:UPX,ASPack等
  • 目的不纯的压缩器:UPack,PESpin,NSAnti等

保护器

PE保护器是一类保护PE文件免受代码逆向分析的实用程序,它们不想普通的压缩器一样仅对PE文件进行运行时压缩,而应用了多种防止代码逆向分析的技术(反调试,反模拟,代码混乱,多态代码,垃圾代码,调试器监视等)

实用目的

  • 防止破解
  • 保护代码与资源

实用现状

大量应用于对破解很敏感的安全程序,另一方面,常见的恶性代码中也大量实用保护器来防止杀毒软件的检测。

保护种类

保护器有多样,有公用程序,商业程序,还有专门提供恶意代码使用的保护器

  • 商业保护器:ASProtect,THemida,SVKP等
  • 公用保护器:UltraProtect,Morphine等

运行是压缩测试

运行时的压缩率要比普通的ZIP压缩低一些,这是由于其压缩后得到的是PE文件,需要添加PE头,并且还要放入解压缩代码。
经过UPX压缩后的PE文件在运行瞬间将(文件中的)压缩的代码解压到(内存中的)第一个节区。所得更详细一点,解压缩代码与压缩的源代码都在第二个节区。文件运行时首先执行解压缩代码,把处于压缩状态的源代码解压到第一个节区

你可能感兴趣的:(逆向工程核心原理)