运行时压缩(UPX)

本文详细介绍了运行时压缩器的工作原理,特别是以UPX为例,探讨了如何压缩notepad.exe并分析其解压过程。通过设置断点和观察内存复制循环,揭示了解压缩代码如何在内存中重建原始程序。最后总结了两种快速查找UPX压缩程序OEP(Original Entry Point)的方法,包括在POPAD指令后的JMP指令处设置断点以及利用硬件断点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任何文件都是由二进制组成的,因而只要使用合适的压缩算法,就可以是文件大小进行压缩。

无损压缩:经过压缩的文件能完全恢复。如7-zip、面包房等压缩程序。

有损压缩:经过压缩的文件不能完全恢复。压缩多媒体文件时大部分使用有损压缩。

运行时压缩器:

运行时压缩器(Run-Time Packer)是针对可执行文件而言的,可执行文件内部含有解压缩代码,文件在运行瞬间在内存中解压缩后执行。

运行时压缩文件也是PE文件,内部含有原PE文件与解码程序,在程序的EP代码中执行解码程序,同时在内存中解压缩后执行。

与普通压缩器相比,运行时压缩器的明显区别是PE文件的可运行性。

把普通的PE文件创建成运行时压缩文件的程序称为压缩器,经反逆向技术处理的压缩器称为保护器。

PE压缩器是指可执行文件的压缩器,其目的主要是缩减PE文件大小、隐藏PE文件内部代码与资源。

PE保护器是一类保护PE文件免受代码逆向分析的实用程序,应用了如反调试、反模拟、代码混乱、多态代码、垃圾代码、调试器监视等技术,通常用于防止破解、保护代码与资源等。

普通压缩和运行时压缩的比较如下表:


这里使用UPX压缩器,对notepad程序进行压缩:


可以看到,notepad文件经压缩后大小缩减了35231。

运行时压缩比普通的ZIP压缩的压缩率较低,原因在于压缩后仍是PE文件,需要添加PE头和放入解压缩代码。

使用PEView查看该文件:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值